ภาพรวมการผูกข้อมูล ASP.NET

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 307860 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
บทความนี้อ้างอิงถึง Microsoft .NET ดังต่อไปนี้ Namespaces ไลบรารีคลาสกรอบ:
  • System.Data
  • System.Data.SqlClient
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

บทความนี้ให้คำแนะนำข้อมูล ASP.NET ผูก

สำหรับภาพรวมของ ASP.NET เพิ่มเติม ดูต่อไปนี้ บทความใน Microsoft Knowledge Base:
305140 แผนการทำงานของ ASP.NET

ข้อมูลเพิ่มเติม

ด้วยการผูกข้อมูล ASP.NET คุณสามารถผูกตัวควบคุมเซิร์ฟเวอร์ใด ๆ เมื่อต้องการคุณสมบัติอย่างง่าย คอลเลกชัน และ/นิพจน์ หรือเมธอด เมื่อคุณใช้ ข้อมูลที่ถูกผูก คุณมีความยืดหยุ่นมากกว่าเมื่อคุณใช้ข้อมูลจากฐานข้อมูล หรือ วิธีอื่น

บทความนี้ระบุถึงการรวมข้อมูลต่อไปนี้ หัวข้อ:

สิ่งจำเป็นสำหรับการผูกข้อมูล

< % # %>ไวยากรณ์

ASP.NET แนะนำเป็นไวยากรณ์ declarative ใหม่ <% # % > นี้ ไวยากรณ์เป็นพื้นฐานสำหรับการใช้การผูกข้อมูลในเพจที่มี.aspx การผูกข้อมูลทั้งหมด ต้องประกอบด้วยนิพจน์ภายในอักขระเหล่านี้ รายการต่อไปนี้ ตัวอย่างของการผูกข้อมูลอย่างง่ายจากแหล่งข้อมูลต่าง ๆ ที่ประกอบด้วย:
  • คุณสมบัติแบบธรรมดา (ไวยากรณ์สำหรับลูกค้าและส่วนประกอบ):
    <%# custID %>
    					
  • คอลเลกชัน (ไวยากรณ์สำหรับใบสั่ง):
    <asp:ListBox id="List1" datasource='<%# myArray %>' runat="server">
    					
  • นิพจน์ (ไวยากรณ์สำหรับการติดต่อ):
    <%# ( customer.First Name + " " + customer.LastName ) %>
    					
  • ผลของเมธอด (ไวยากรณ์สำหรับยอดดุลคงเหลือ):
    <%# GetBalance(custID) %>
    					
ในตัวอย่างก่อนหน้านี้ อินไลน์ < % # %>แท็ก บ่งชี้ที่จะใช้วางข้อมูลจากแหล่งข้อมูลที่เฉพาะเจาะจง เพจ.aspx ตัวอย่างการผูกข้อมูลต่อไปนี้ใช้ตัวควบคุมกล่องข้อความเว็บเซิร์ฟเวอร์:
<asp:textbox id=txt text="<%# custID %>" runat=server />
				
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับไวยากรณ์ของการผูกข้อมูล ดู.NET ดังต่อไปนี้ กรอบเอกสารประกอบของซอฟต์แวร์พัฒนา Kit (SDK):
ไวยากรณ์ของนิพจน์การผูกข้อมูล
.aspx http://msdn2.microsoft.com/en-us/library/bda9bbfx (vs.71)

Page.DataBind() กับ Control.DataBind()

หลังจากที่ได้ถูกกำหนด และตั้งค่าแหล่งข้อมูลเฉพาะ สำหรับออบเจ็กต์บนเพจ.aspx คุณต้องผูกข้อมูลกับข้อมูลเหล่านี้ แหล่งที่มา คุณสามารถใช้Page.DataBindหรือControl.DataBindวิธีการผูกข้อมูลไปยังแหล่งข้อมูล

ทั้งสองอย่าง วิธีการทำงานในทำนองเดียวกัน ความแตกต่างหลักคือ ว่า แหล่งข้อมูลทั้งหมดจะถูกผูกไว้ เมื่อต้องการควบคุมเซิร์ฟเวอร์ของตนเองหลังจากPage.DataBindคือเรียกวิธี ไม่มีข้อมูลที่ถูกแสดงถึงตัวควบคุมจนกว่าคุณ อย่างใดอย่างหนึ่งDataBindวิธีการ ของตัวควบคุมเซิร์ฟเวอร์เว็บ หรือจน กว่าคุณเรียกใช้เรียกอย่างชัดเจน วิธีการPage.DataBindดับเพจ โดยทั่วไปPage.DataBind (หรือDataBind) จะเรียกว่าจากเหตุการณ์Page_Load

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีDataBindดูเอกสารประกอบ.NET Framework SDK ดังต่อไปนี้: วิธีการ Control.DataBind
http://msdn.microsoft.com/en-us/library/w5e5992d.aspx

ตัวควบคุมที่ผูกกับข้อมูลรายการ

ตัวควบคุมรายการจะควบคุมเซิร์ฟเวอร์เว็บพิเศษที่สามารถผูก เมื่อต้องการคอลเลกชัน คุณสามารถใช้ตัวควบคุมเหล่านี้เพื่อแสดงแถวของข้อมูลในตัว รูปแบบของแม่แบบที่กำหนดเอง ตัวควบคุมรายการทั้งหมดเปิดเผยแหล่งข้อมูลและคุณสมบัติDataMemberซึ่งใช้ในการผูกกับคอลเลกชัน

ตัวควบคุมเหล่านี้สามารถผูกคุณสมบัติแหล่งข้อมูลของตนเองเมื่อต้องการเรียกเก็บเงินที่สนับสนุนการIEnumerable, ICollectionหรืออินเทอร์เฟซสำหรับIListSource

ตัวควบคุม repeater

ตัวควบคุมRepeater templated ผูก กับข้อมูลรายการที่อยู่ ตัวควบคุมRepeaterเป็น "lookless นั่นคือ ไม่มีอยู่แล้วภายในใด ๆ เค้าโครงหรือลักษณะ ดังนั้น คุณต้องชัดเจนประกาศโครงร่าง HTML ทั้งหมด จัดรูปแบบ และแท็กลักษณะในแม่แบบของตัวควบคุม

ต่อไปนี้ ตัวอย่างรหัสแสดงให้เห็นถึงวิธีการใช้ตัวควบคุมรายการหนึ่ง ตัวควบคุมRepeaterเพื่อแสดงข้อมูล:

หมายเหตุ: คุณต้องปรับเปลี่ยนพารามิเตอร์ของสายอักขระการเชื่อมต่อเป็น จำเป็นสำหรับสภาพแวดล้อมของคุณ

Visual Basic .NET
<%@ Page Language="vb" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>

<script runat="server">
Sub Page_Load(sender As Object, e As EventArgs)

   Dim cnn As SqlConnection = New SqlConnection("server=(local);" & _
                                                "database=pubs;Integrated Security=SSPI")
   Dim cmd As SqlDataAdapter = New SqlDataAdapter("select * from authors", cnn)
   Dim ds As DataSet = New DataSet()
   cmd.Fill(ds)
   Repeater1.DataSource = ds
   Repeater1.DataBind()

End Sub
</script>
<html>
<body>
   <form id="Form1" method="post" runat="server">
      <asp:Repeater id="Repeater1" runat="server">
         <ItemTemplate>
         <%# DataBinder.Eval(Container.DataItem,"au_id") %><br>
	 </ItemTemplate>
      </asp:Repeater>
   </form>
</body>
</html>
				
Visual C# .NET
<%@ Page language="c#" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>

<script runat="server">
void Page_Load(Object sender, EventArgs e) 
{ 
   SqlConnection cnn = new 
       SqlConnection("server=(local);database=pubs;Integrated Security=SSPI"); 
   SqlDataAdapter da = new SqlDataAdapter("select * from authors", cnn); 
   DataSet ds = new DataSet(); 
   da.Fill(ds, "authors"); 
   Repeater1.DataSource = ds.Tables["authors"];
   Repeater1.DataBind();
}
</script>
<html>
<body>
   <form id="WebForm2" method="post" runat="server">
      <asp:Repeater id="Repeater1" runat="server">
         <ItemTemplate>
         <%# DataBinder.Eval(Container.DataItem,"au_id") %><br>
    	 </ItemTemplate>
      </asp:Repeater>
   </form>
</body>
</html>
				
Visual J# .NET
<%@ Page language="VJ#" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>

 <script runat="server">
void Page_Load(Object sender, EventArgs e) 
{ 
    SqlConnection cnn = new SqlConnection("server=(local);database=pubs;Integrated
         Security=SSPI"); 
    SqlDataAdapter da = new SqlDataAdapter("select * from authors", cnn); 
    DataSet ds = new DataSet(); 
    da.Fill(ds, "authors"); 
    DataTableCollection dtc = ds.get_Tables();
    int index = dtc.IndexOf("authors");
    Repeater1.set_DataSource(dtc.get_Item(index));
    Repeater1.DataBind();
}
</script>
<html>
<body>
   <form id="WebForm2" method="post" runat="server">
      <asp:Repeater id="Repeater1" runat="server">
         <ItemTemplate>
         <%# DataBinder.Eval(Container.DataItem,"au_id") %><br>
             </ItemTemplate>
      </asp:Repeater>
   </form>
</body>
</html>
				
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับตัวควบคุมRepeaterดูเอกสารประกอบ.NET Framework SDK ดังต่อไปนี้:
ตัวควบคุมเซิร์ฟเวอร์ของเว็บ repeater
http://msdn.microsoft.com/en-us/library/x8f2zez5.aspx

ตัวควบคุม dataList

คลาDataListรายการคุณลักษณะ-rich, templated ผูก กับข้อมูลที่อยู่ คุณสามารถ ปรับเปลี่ยนแม่แบบกำหนดเองของตัวควบคุมนี้ ไม่เหมือนกับตัวควบคุมRepeater , DataListสนับสนุนการจำลองภาพทิศ และอาจทำให้ในอีกทางหนึ่งคือการ ตาราง HTML ในขณะใช้งาน

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับตัวควบคุมDataListดูเอกสารประกอบ.NET Framework SDK ดังต่อไปนี้:
ตัวควบคุมเซิร์ฟเวอร์ของเว็บ dataList
http://msdn.microsoft.com/en-us/library/9cx2f3ks (VS.85) .aspx

ตัวควบคุม DataGrid

ตัวควบคุมDataGridกริดแนะนำทั้งหมด หลาย ผูก กับข้อมูลที่อยู่ เมื่อต้องการ กำหนดเค้าโครงของคอลัมน์แต่ละคอลัมน์ในการDataGridคุณสามารถตั้งค่าชนิดของคอลัมน์เมื่อต้องการ "templated" และปรับเปลี่ยนการ แม่แบบของคอลัมน์ ตัวควบคุมDataGridอาจทำให้ไม่ มีต้นแบบ ซึ่งทำให้ตัวควบคุมนี้ เหมาะสำหรับการรายงานสถานการณ์ DataGridยังสนับสนุนการเลือก แก้ไข ลบ เพจจิ้ง และการเรียงลำดับ โดยคอลัมน์และคอลัมน์ของปุ่ม

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับตัวควบคุมDataGridดูเอกสารประกอบ.NET Framework SDK ดังต่อไปนี้:
ตัวควบคุมเซิร์ฟเวอร์เว็บ DataGrid
.aspx http://msdn.microsoft.com/en-us/library/aa710742 (VS.71)

การเข้าถึงข้อมูล

ส่วนนี้อธิบายวิธีการเข้าถึงข้อมูลจากฐานข้อมูล และ ผูกข้อมูลกับตัวควบคุมรายการ คุณสามารถใช้ในชุดข้อมูลหรือคลาสDataReaderเพื่อขอรับข้อมูลจากฐานข้อมูล

ชุดข้อมูลคลาส

เป็นชุดข้อมูลที่ประกอบด้วยตัวแทนที่สมบูรณ์ของข้อมูล การรวมตาราง โครงสร้าง ความสัมพันธ์ระหว่างตาราง และลำดับของข้อมูล คลาสที่ชุดข้อมูลมีความยืดหยุ่นเพียงพอที่จะเก็บข้อมูลจากชนิดใดก็ ฐานข้อมูลไปยังแฟ้ม Extensible Markup Language (XML) ชุดข้อมูลคลาใช้โท นั่นคือ คุณสามารถผ่านคลาสเหล่านี้จาก ไคลเอนต์กับเซิร์ฟเวอร์โดยไม่ต้องพวกทรัพยากรการเชื่อมต่อเซิร์ฟเวอร์ ต่อไปนี้ รหัสอธิบายเกี่ยวกับวิธีการที่ใช้เป็นชุดข้อมูลเมื่อต้องผูกข้อมูลไปยังตัวควบคุม:

หมายเหตุ: คุณต้องปรับเปลี่ยนพารามิเตอร์ของสายอักขระการเชื่อมต่อเป็น จำเป็นสำหรับสภาพแวดล้อมของคุณ

Visual Basic .NET
Dim cnn As SqlConnection = New SqlConnection("server=(local);" & _
                                             "database=pubs;Integrated Security=SSPI")
Dim cmd As SqlDataAdapter = New SqlDataAdapter("select * from authors", cnn)
Dim ds As DataSet = New DataSet()
cmd.Fill(ds)
MyRepeater.DataSource = ds
MyRepeater.DataBind() 
				
Visual C# .NET
SqlConnection cnn = new SqlConnection("server=(local);
                                       database=pubs;Integrated Security=SSPI"); 
SqlDataAdapter da = new SqlDataAdapter("select * from authors", cnn); 
DataSet ds = new DataSet(); 
da.Fill(ds);
MyRepeater.DataSource = ds;
MyRepeater.DataBind(); 
				
Visual J# .NET
SqlConnection cnn = new SqlConnection("server=(local);
                                       database=pubs;Integrated Security=SSPI"); 
SqlDataAdapter da = new SqlDataAdapter("select * from authors", cnn); 
DataSet ds = new DataSet(); 
da.Fill(ds); 
MyRepeater.set_DataSource(ds);
MyRepeater.DataBind();
				
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับชุดข้อมูลคลา ดูเอกสารประกอบ.NET Framework SDK ดังต่อไปนี้:
ชุดข้อมูลคลาส
.aspx http://msdn2.microsoft.com/en-us/library/system.data.dataset (vs.71)

คลาส DataReader

ในทางกลับกัน ถ้าคุณต้องการแสดง (และไม่มีการเปลี่ยนแปลง) ข้อมูลเท่านั้น นั่นคือเมื่อต้องจะแสดง คลาDataReaderอาจแก้ไขปัญหาได้ดียิ่งขึ้น ตัวอย่างเช่น จะดีกว่าการใช้ DataReaderสำหรับการDropDownListควบคุมเนื่องจากการDataReaderเคอร์เซอร์ข้อมูลไปข้างหน้าอย่างเดียว รหัสต่อไปนี้แสดง วิธีการใช้คลาSqlDataReaderเมื่อต้องผูกข้อมูลไปยังตัวควบคุม:

Visual Basic .NET
Dim cnn As SqlConnection = New SqlConnection("server=(local);" & _
                                             "database=pubs;Integrated Security=SSPI")
Dim cmd As SqlCommand = New SqlCommand("select * from authors", cnn)

cnn.Open()
MyRepeater.DataSource = cmd.ExecuteReader(CommandBehavior.CloseConnection)
MyRepeater.DataBind()
				
Visual C# .NET
SqlConnection cnn = new SqlConnection("server=(local);
                                       database=pubs;Integrated Security=SSPI");
SqlCommand cmd = new SqlCommand("select * from authors", cnn);

cnn.Open();
MyRepeater.DataSource = cmd.ExecuteReader(CommandBehavior.CloseConnection);
MyRepeater.DataBind();
				
Visual J# .NET
SqlConnection cnn = new SqlConnection("server=(local);
                                       database=pubs;Integrated Security=SSPI"); 

SqlCommand cmd = new SqlCommand("select * from authors", cnn); 

cnn.Open();
MyRepeater.set_DataSource(cmd.ExecuteReader(CommandBehavior.CloseConnection));
MyRepeater.DataBind();
				
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการSqlDataReaderคลาสและข้อมูลเข้ากับ ASP.NET ให้ดูที่หัวข้อต่อไปนี้ใน เอกสารประกอบ.NET Framework SDK:
คลาส SqlDataReader
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.aspx

การพัฒนาโปรแกรมประยุกต์ ASP.NET มีประสิทธิภาพสูง
.aspx http://msdn2.microsoft.com/en-us/library/5dws599a (vs.71)

ผูกในแม่แบบตัวควบคุมรายการ

คุณสามารถใช้แม่แบบ ในรายการตัวควบคุมผูก และ แต่ละระเบียนของแหล่งข้อมูลที่กำหนดเอง ส่วนนี้ประกอบด้วยสาม วิธีการทำเช่นนี้

วิธีการ DataBinder.Eval

เมื่อแหล่งข้อมูลที่ทำงานกับข้อมูลที่ถูกส่งกลับจากแบบ ฐานข้อมูล แหล่งข้อมูลอาจประกอบด้วยข้อมูลมากมายชิ้น คุณสามารถ ใช้วิธีDataBinder.Evalทั่วไปเพื่อส่งกลับข้อมูล ในการต่อไปนี้โค้ดตัวอย่าง "au_id" ฟิลด์จะถูกส่งกลับจากแหล่งข้อมูลของคอนเทนเนอร์วัตถุ:
<%# DataBinder.Eval(Container.DataItem,"au_id") %>
				
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการDataBinder.Evalดูเอกสารประกอบ.NET Framework SDK ดังต่อไปนี้:
วิธีการ DataBinder.Eval
http://msdn.microsoft.com/en-us/library/4hx47hfe.aspx

Casting ที่ชัดเจน

ถ้าคุณต้องการให้ตัวควบคุมเพิ่มเติม ใช้ casting ที่ชัดเจน ตัวอย่างชัดเจน การแปลงใช้กับคำสำคัญในการแปลงชนิด คำสำคัญเหล่านี้ทำหน้าที่เป็นฟังก์ชัน แต่ คอมไพเลอร์สร้างอินไลน์โค้ด ดังนั้น การดำเนินการจะเร็วกว่าเล็กน้อย กว่า ด้วยฟังก์ชันเรียกใช้ ตัวอย่างรหัสต่อไปนี้ใช้ casting ที่ชัดเจน:

Visual Basic .NET
' DataTable as the DataSource
<%# CType(Container.DataItem, System.Data.DataRowView)("au_id") %>

' DataReader as the DataSource
<%# CType(Container.DataItem, System.Data.Common.DbDataRecord)("au_id") %>

' DataReader as the DataSource
<%# CType(Container.DataItem, System.Data.Common.DbDataRecord)(0) %>
				
Visual C# .NET
// DataTable as the DataSource
<%# ((System.Data.DataRowView)Container.DataItem)["au_id"] %> 

// DataReader as the DataSource
<%# ((System.Data.Common.DbDataRecord)Container.DataItem)["au_id"] %>

// DataReader as the DataSource
<%# ((System.Data.Common.DbDataRecord)Container.DataItem)[0] %>
				
Visual J# .NET
// DataTable as the DataSource
<%# ((System.Data.DataRowView)Container.DataItem)["au_id"] %> 

// DataReader as the DataSource
<%# ((System.Data.Common.DbDataRecord)Container.DataItem)["au_id"] %>

// DataReader as the DataSource
<%# ((System.Data.Common.DbDataRecord)Container.DataItem)[0] %>
				
โปรดสังเกตว่า ที่ก่อนหน้า samples ใช้อย่างใดอย่างหนึ่งเป็นDataTableซึ่งเป็นชุดย่อยของชุดข้อมูลหรือDataReaderเป็นแหล่งข้อมูล

เหตุการณ์ ItemDataBound

นอกจากนี้คุณยังสามารถใช้เหตุการณ์ItemDataBoundของตัวควบคุมเมื่อต้องผูกข้อมูล เหตุการณ์นี้เกิดขึ้นเมื่อมี สินค้าเป็นข้อมูลที่ถูกผูกไว้กับตัวควบคุม ตัวอย่างโค้ด HTML ต่อไปนี้กำหนดตัวควบคุมRepeaterกับมีItemTemplate:
<asp:repeater id=rptr runat=server>
   <itemtemplate>
      <asp:label id=lblAuthorID runat=server />
   </itemtemplate>
</asp:repeater>
				
ต้องใช้วิธีการต่อไปนี้ในเพจของคุณ:

Visual Basic .NET
public Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
  
   'TODO: Retrieve data from a database,
   'and bind the data to a list control.

End Sub

public Sub rptr_OnItemDataBound(ByVal sender As Object, _
ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles rptr.ItemDataBound
   Dim rec As DataRowView
   rec = e.Item.DataItem

   'Make sure that you have the data.
   If Not IsDBNull(rec) Then
      Dim l1 As Label
      l1 = e.Item.FindControl("lblAuthorID")
      l1.Text = rec("au_id").ToString()
   End If
End Sub
				
Visual C# .NET
public void Page_Init(object sender, System.EventArgs e)
{
   rptr.ItemDataBound += new RepeaterItemEventHandler(rptr_OnItemDataBound);
}
public void Page_Load(object sender, System.EventArgs e)
{
   // TODO: Retrieve data from a database,
   // and bind the data to a list control.
}
public void rptr_OnItemDataBound(object sender, RepeaterItemEventArgs e)
{
   System.Data.Common.DbDataRecord rec = (System.Data.Common.DbDataRecord)
                                          e.Item.DataItem;
   if(rec!=null) //Make sure that you have the data.
   {
      Label l1 = (Label)e.Item.FindControl("lblAuthorID");
      l1.Text = rec["au_id"].ToString();
   }
}
				
Visual J# .NET
public void Page_Init(Object sender, System.EventArgs e)
{
            rptr.add_ItemDataBound(new RepeaterItemEventHandler(rptr_OnItemDataBound));
}
private void Page_Load(Object sender, System.EventArgs e)
{
            // TODO: Retrieve data from a database,
            // and bind the data to a list control.
}
public void rptr_OnItemDataBound(Object sender, RepeaterItemEventArgs e)
{
            System.Data.Common.DbDataRecord rec = (System.Data.Common.DbDataRecord)
                                                   e.get_Item().get_DataItem();
            if (rec != null) //Make sure that you have the data.
            {
                        Label l1 = (Label)e.get_Item().FindControl("lblAuthorID");
                        l1.set_Text(((rec.get_Item("au_id")).ToString()));
            }
}
				

คุณสมบัติ

หมายเลขบทความ (Article ID): 307860 - รีวิวครั้งสุดท้าย: 15 ตุลาคม 2555 - Revision: 5.0
ใช้กับ
  • Microsoft ASP.NET 1.0
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual J# .NET 2003 Standard Edition
  • Microsoft ASP.NET 1.1
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
Keywords: 
kbarttyperoadmap kbdatabinding kbinfo kbservercontrols kbmt KB307860 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:307860

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com