Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

Trình duyệt của bạn không được hỗ trợ

Bạn cần cập nhật trình duyệt của mình để sử dụng trang web.

Cập nhật lên Internet Explorer phiên bản mới nhất.

Làm thế nào để: Thực hiện một helper tập dữ liệu tham gia lớp học trong Visual C#.NET

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch máy của Microsoft chứ không phải do con người dịch. Microsoft cung cấp các bài viết do con người dịch và cả các bài viết do máy dịch để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng ngôn ngữ của bạn. Tuy nhiên, bài viết do máy dịch không phải lúc nào cũng hoàn hảo. Loại bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, giống như một người nước ngoài có thể mắc sai sót khi nói ngôn ngữ của bạn. Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra. Microsoft cũng thường xuyên cập nhật phần mềm dịch máy này.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này:326080
Đối với một Microsoft Visual Basic.NET Phiên bản của bài viết này, xem
325688 HOWTO: Thực hiện một tập dữ liệu tham gia lớp học helper bằng Visual Basic.NET
LƯU Ý: Bài viết này là một trong một loạt các DataSetHelper bài viết. Bạn có thể nhập mã số trong các DataSetHelper lớp học được liệt kê trong bài viết này với mã được cung cấp trong khác DataSetHelper bài viết để làm cho một lớp duy nhất với một tập hợp tính năng toàn diện hơn.

Bài viết này đề cập đến Microsoft sau.Không gian tên thư viện lớp của NET Framework:
  • System.Data

TRONG TÁC VỤ NÀY

TÓM TẮT
Bài từng bước này mô tả làm thế nào để thực hiện và cách sử dụng một DataSetHelper lớp học bao gồm các mẫu mã để tạo ra một DataTable đối tượng từ hai hay nhiều liên quan DataTable định nghĩa và bản sao hồ sơ được sắp xếp và lọc từ nguồn DataTable các đối tượng đến đích DataTable.

Để thực hiện việc này, bạn sử dụng phương pháp công cộng sau đây:
  • CreateJoinTable
  • InsertJoinInto
  • SelectJoinInto
Các SelectJoinInto các cuộc gọi phương pháp các CreateJoinTable và các InsertJoinInto phương pháp. Bạn cũng có thể sử dụng một thành viên nào về phương pháp và dữ liệu tư nhân helper để lưu trữ danh sách lĩnh vực phân tích.

Các DataSetHelper lớp bao gồm một Số liệu tài khoản của biến. Tùy chọn, bạn có thể gán một hiện có Số liệu để các Số liệu tài khoản của biến. Nếu biến thành viên điểm đến một hợp lệ Số liệu, bất kỳ DataTable các đối tượng mà các CreateJoinTable hoặc các SelectJoinInto phương pháp tạo ra được bổ sung vào các Số liệu. Trong cả hai trường hợp, các cuộc gọi phương thức trả về một tham chiếu đến các DataTable đối tượng. Các InsertJoinInto phương pháp đòi hỏi một mục tiêu hiện tại DataTable và không trở về bất cứ điều gì.

Để biết thêm thông tin về Số liệu các đối tượng, bấm vào số bài viết dưới đây để xem bài viết trong cơ sở kiến thức Microsoft:
313485 Thông báo: Lộ trình cho ADO.Số liệu NET, DataView và DataViewManager
back to the top

Yêu cầu

Danh sách sau vạch ra được đề nghị phần cứng, phần mềm, mạngcơ sở hạ tầng, và gói dịch vụ được yêu cầu:
  • Microsoft Windows XP, Windows 2000 hoặc Windows NT 4.0 Service Pack 6a
  • Microsoft Visual Studio.NET
Bài viết này giả định rằng bạn đã quen thuộc với các chủ đề sau:
  • Visual C#.NET cú pháp
  • ADO.Nguyên tắc cơ bản NET và cú pháp
back to the top

DataSetHelper vỏ Class

Mã trong phần này tuyên bố lớp vỏ để mà tất cả DataSetHelper bài viết thêm phương pháp và các biến thành viên.
  1. Bắt đầu Visual Studio.NET.
  2. Trên các Tệp trình đơn, điểm đến Mới, sau đó bấm Dự án.
  3. Trong các Dự án mới hộp thoại hộp, bấm vào Visual C# các dự án dưới Các loại dự án, sau đó bấm Thư viện lớp dưới Khuôn mẫu.
  4. Trong các Tên hộp, loại DataSetHelper.
  5. Thay thế mã lớp với đoạn mã sau:
    public class DataSetHelper{    public DataSet ds;    public DataSetHelper(ref DataSet DataSet)    {	ds = DataSet;    }    public DataSetHelper()    {	ds = null;    }}					
    Bạn có thể sử dụng hai overloads cho các nhà xây dựng để tạo ra một thể hiện của lớp có hoặc không có một tham chiếu đến một hợp lệ Số liệu. Đối với một lớp có chứa một tham chiếu đến một hợp lệ Số liệu, các DataTable các đối tượng mà các phương pháp trở về cũng được gửi tự động đến các Số liệu.
back to the top

Lĩnh vực danh sách phân tích cú pháp

Tiết đoạn này chứa mã cho một danh sách các lĩnh vực phân tích cú pháp. Cấu trúc phân tích được sử dụng để cho các CreateJoinTable và các InsertJoinInto phương pháp không phải tính danh sách lĩnh vực. Những phương pháp này phải tính danh sách trường nếu họ được gọi là từ các SelectJoinInto phương pháp hoặc từ mã riêng của bạn. Danh sách các lĩnh vực phân tích và danh sách unparsed trường sẽ được lưu trong Tư nhân tài khoản của các biến của các DataSetHelper lớp học.
  1. Thêm dưới đây Tư nhân lớp học định nghĩa trong các DataSetHelper lớp mà bạn tạo ra trong các "DataSetHelper vỏ Class"phần:
    private class FieldInfo{    public string RelationName;    public string FieldName;	//source table field name    public string FieldAlias;	//destination table field name    public string Aggregate;}					
    LƯU Ý: Lớp này là phổ biến khác DataSetHelper bài viết và có chứa một số lĩnh vực bài viết này không sử dụng.

  2. Thêm dưới đây Tư nhân tài khoản của các biến để định nghĩa lớp ngay lập tức sau khi các Số liệu tuyên bố:
    private System.Collections.ArrayList m_FieldInfo; private string m_FieldList; 					
  3. Thêm dưới đây Tư nhân phương pháp để định nghĩa lớp. Phương pháp này là tương tự như các phương pháp được sử dụng trong khác DataSetHelper bài viết.
    private void ParseFieldList(string FieldList, bool AllowRelation){    /*     * This code parses FieldList into FieldInfo objects  and then      * adds them to the m_FieldInfo private member     *      * FieldList systax:  [relationname.]fieldname[ alias], ...    */     if (m_FieldList == FieldList) return;    m_FieldInfo = new System.Collections.ArrayList();    m_FieldList = FieldList;    FieldInfo Field; string[] FieldParts;    string[] Fields=FieldList.Split(',');    int i;    for (i=0; i<=Fields.Length-1; i++)    {        Field=new FieldInfo();        //parse FieldAlias        FieldParts = Fields[i].Trim().Split(' ');        switch (FieldParts.Length)        {            case 1:                //to be set at the end of the loop                break;            case 2:                Field.FieldAlias=FieldParts[1];                break;            default:                throw new Exception("Too many spaces in field definition: '" + Fields[i] + "'.");	                                }        //parse FieldName and RelationName        FieldParts = FieldParts[0].Split('.');        switch (FieldParts.Length)        {            case 1:                 Field.FieldName=FieldParts[0];                break;            case 2:                if (AllowRelation==false)                    throw new Exception("Relation specifiers not permitted in field list: '" + Fields[i] + "'.");                Field.RelationName = FieldParts[0].Trim();                Field.FieldName=FieldParts[1].Trim();                break;            default:                throw new Exception("Invalid field definition: " + Fields[i] + "'.");        }        if (Field.FieldAlias==null)             Field.FieldAlias = Field.FieldName;        m_FieldInfo.Add (Field);    }}					
back to the top

Phương pháp CreateJoinTable

Tiết đoạn này chứa mã cho các CreateJoinTable phương pháp.

Sau đây là quy ước gọi điện thoại cho các CreateJoinTable phương pháp:
dt = dsHelper.CreateJoinTable("TestTable", ds.Tables["Employees"],    "FirstName FName,LastName LName,DepartmentEmployee.DepartmentName Department");				
Mẫu cuộc gọi này tạo ra một mới DataTable với một TableName TestTable và ba lĩnh vực (FName, LName và vùng). Ba lĩnh vực có dữ liệu cùng loại như FirstName và các lĩnh vực thứ trong bảng nhân viên và các lĩnh vực DepartmentName trong bảng phụ huynh được truy cập thông qua DepartmentEmployee DataRelation đối tượng.

Sử dụng cú pháp sau đây để xác định các lĩnh vực trong danh sách lĩnh vực:
[relationname.]fieldname[ alias], ...				
Lưu ý sau đây cho cú pháp này:
  • Các ColumnName và các DataType thuộc tính là thuộc tính duy nhất được sao vào các điểm đến DataTable.
  • Kết quả đánh được sao chép cho các lĩnh vực có chứa một biểu hiện.
  • Bạn có thể đổi tên một lĩnh vực trong các điểm đến DataTable bằng cách chỉ ra một tên bí danh.
  • Danh sách các lĩnh vực có thể chứa một tập hợp con của các lĩnh vực tên được liệt kê theo một thứ tự khác nhau hơn so với thứ tự trong mã nguồn DataTable. Nếu danh sách trường là trống, một ngoại lệ được ném.
  • Các DataRelation phải liên quan đến các bảng phụ huynh. Ví dụ, nếu bạn muốn tạo ra một bảng mà kết hợp các lĩnh vực của khách hàng, nhân viên và các bảng đơn đặt hàng, bạn phải sử dụng bảng đơn đặt hàng như nguồn bảng và sau đó tham khảo các lĩnh vực trong các khách hàng và nhân viên bảng bằng phương tiện của quan hệ.
Để gọi các CreateJoinTable phương pháp, thêm các phương pháp sau đây để các DataSetHelper lớp mà bạn tạo ra trong các "DataSetHelper vỏ Class"phần:
public DataTable CreateJoinTable(string TableName, DataTable SourceTable, string FieldList){    /*     * Creates a table based on fields of another table and related parent tables     *      * FieldList syntax: [relationname.]fieldname[ alias][,[relationname.]fieldname[ alias]]...    */     if (FieldList==null)    {        throw new ArgumentException("You must specify at least one field in the field list.");        //return CreateTable(TableName, SourceTable);    }    else    {        DataTable dt = new DataTable(TableName);        ParseFieldList(FieldList, true);        foreach(FieldInfo Field in m_FieldInfo)        {            if(Field.RelationName==null)            {                DataColumn dc = SourceTable.Columns[Field.FieldName];                dt.Columns.Add(dc.ColumnName, dc.DataType, dc.Expression);            }            else            {                DataColumn dc = SourceTable.ParentRelations[Field.RelationName].ParentTable.Columns[Field.FieldName];                dt.Columns.Add(dc.ColumnName, dc.DataType, dc.Expression);            }        }        if (ds!=null)            ds.Tables.Add(dt);        return dt;    }}				
back to the top

Phương pháp InsertJoinInto

Tiết đoạn này chứa mã cho các InsertJoinInto phương pháp. Các InsertJoinInto phương pháp sao hồ sơ được sắp xếp và lọc từ bảng mã nguồn và liên quan đến bảng điểm đến bảng. Khi bạn gọi các ParseFieldList bất động sản, bạn có thể phân tích danh sách trước đó đã được phân tích, nếu các danh sách có sẵn. Nếu danh sách trường là trống, một ngoại lệ được ném.

Sau đây là quy ước gọi điện thoại cho các InsertJoinInto phương pháp:
dsHelper.InsertJoinInto(ds.Tables["TestTable"], ds.Tables["Employees"],     "FirstName FName,LastName LName,DepartmentEmployee.DepartmentName Department",     "EmployeeID<5", "BirthDate");				
Mẫu cuộc gọi sao hồ sơ từ các nhân viên DataTable (và lĩnh vực DepartmentName một liên quan DataTable) để TestTable DataTable, đó là lọc vào "EmployeeID<5" and="" is="" sorted="" by=""></5">

LƯU Ý: Các bộ lọc và biểu hiện sắp xếp áp dụng chỉ nguồn bảng và không cần bất kỳ bảng có liên quan.

Để gọi các InsertJoinInto phương pháp, thêm các phương pháp sau đây để các DataSetHelper lớp mà bạn tạo ra trong các "DataSetHelper vỏ Class"phần:
public void InsertJoinInto(DataTable DestTable, DataTable SourceTable,     string FieldList, string RowFilter, string Sort){    /*    * Copies the selected rows and columns from SourceTable and inserts them into DestTable    * FieldList has same format as CreatejoinTable    */     if (FieldList==null)    {        throw new ArgumentException("You must specify at least one field in the field list.");        //InsertInto(DestTable, SourceTable, RowFilter, Sort);    }    else    {    ParseFieldList(FieldList, true);    DataRow[] Rows = SourceTable.Select(RowFilter, Sort);    foreach(DataRow SourceRow in Rows)    {            DataRow DestRow = DestTable.NewRow();            foreach(FieldInfo Field in m_FieldInfo)            {                if(Field.RelationName==null)                {                    DestRow[Field.FieldName] = SourceRow[Field.FieldName];                }                else                {                    DataRow ParentRow = SourceRow.GetParentRow(Field.RelationName);                    DestRow[Field.FieldName] = ParentRow[Field.FieldName];                }            }            DestTable.Rows.Add(DestRow);        }    }}				
back to the top

Phương pháp SelectJoinInto

Tiết đoạn này chứa mã cho các SelectJoinInto phương pháp. Phương pháp này là một sự kết hợp của các CreateJoinTable và các InsertJoinInto phương pháp. Các SelectJoinInto phương pháp tạo ra một mới DataTable dựa trên hiện tại DataTable các đối tượng và bản sao hồ sơ được sắp xếp và lọc vào trong các mới DataTable.

Sau đây là quy ước gọi điện thoại cho các SelectJoinInto phương pháp:
dt = dsHelper.SelectInto("TestTable", ds.Tables["Employees"],     "FirstName FName,LastName LName,DepartmentEmployee.DepartmentName Department", "EmployeeID<5", "BirthDate");				
Cuộc gọi mẫu này tạo ra một DataTable đặt tên TestTable với ba lĩnh vực. Ba lĩnh vực được dựa trên FirstName và các lĩnh vực thứ của nhân viên DataTable và các lĩnh vực DepartmentName của các DataTable đó được tham chiếu qua DepartmentEmployee DataRelation. Sau đó mẫu này sao hồ sơ từ các nhân viên DataTable để TestTable DataTable, đó là lọc vào "EmployeeID<5" and="" is="" sorted="" by=""></5">

LƯU Ý: Các bộ lọc và biểu hiện sắp xếp áp dụng chỉ nguồn bảng và không liên quan đến bảng.

Để gọi các SelectJoinInto phương pháp, thêm các phương pháp sau đây để các DataSetHelper lớp mà bạn tạo ra trong các "DataSetHelper vỏ Class"phần:
public DataTable SelectJoinInto(string TableName, DataTable SourceTable, string FieldList, string RowFilter, string Sort){    /*     * Selects sorted, filtered values from one DataTable to another.     * Allows you to specify relationname.fieldname in the FieldList to include fields from     *  a parent table. The Sort and Filter only apply to the base table and not to related tables.    */     DataTable dt = CreateJoinTable(TableName, SourceTable, FieldList);    InsertJoinInto(dt, SourceTable, FieldList, RowFilter, Sort);    return dt;}				
back to the top

Kiểm tra các ứng dụng

  1. Lưu và sau đó biên dịch các DataSetHelper lớp học mà bạn đã tạo trong phần trước.
  2. Thực hiện theo các bước sau để tạo ra một mới Visual C# Windows Application:
    1. Bắt đầu Visual Studio.NET.
    2. Trên các Tệp trình đơn, điểm đến Mới, sau đó bấm Dự án.
    3. Trong các Dự án mới hộp thoại hộp, bấm vào Visual C# các dự án dưới Các loại dự án, sau đó bấm Ứng dụng Windows dưới Khuôn mẫu.
  3. Trong giải pháp Explorer, bấm chuột phải vào các giải pháp, và sau đó nhấp vào Thêm dự án hiện tại. Thêm dự án DataSetHelper.
  4. Trên các Dự án trình đơn, nhấp vào Thêm tài liệu tham khảo.
  5. Trong các Thêm tài liệu tham khảo hộp thoại hộp, bấm vào các Các dự án tab, và sau đó thêm một tham chiếu đến các dự án DataSetHelper tới ứng dụng Windows mẫu.
  6. Trong nhà thiết kế mẫu, kéo ba Nút điều khiển và một DataGrid điều khiển từ hộp công cụ mẫu. Tên các nút btnCreateJoin, btnInsertJoinInto, và btnSelectJoinInto. Giữ tên mặc định cho các DataGrid kiểm soát (dataGrid1).
  7. Trong mẫu mã, thêm dưới đây Bằng cách sử dụng nội dung trên cùng của cửa sổ mã:
    using System.Data;					
  8. Thêm khai báo biến sau đây để định nghĩa hình thức:
    DataSet ds; DataSetHelper.DataSetHelper dsHelper;					
  9. Thêm mã sau đây để các Form_Load sự kiện:
    ds = new DataSet();dsHelper = new DataSetHelper.DataSetHelper(ref ds);//Create source tablesDataTable dt = new DataTable("Employees");dt.Columns.Add("EmployeeID",Type.GetType("System.Int32") );dt.Columns.Add("FirstName", Type.GetType("System.String"));dt.Columns.Add("LastName", Type.GetType("System.String"));dt.Columns.Add("BirthDate", Type.GetType("System.DateTime"));dt.Columns.Add("JobTitle", Type.GetType("System.String"));dt.Columns.Add("DepartmentID", Type.GetType("System.Int32"));dt.Rows.Add(new object[] {1, "Tommy", "Hill", new DateTime(1970, 12, 31),  "Manager", 42});dt.Rows.Add(new object[] {2, "Brooke", "Sheals", new DateTime(1977, 12, 31), "Manager", 23});dt.Rows.Add(new object[] {3, "Bill", "Blast", new DateTime(1982, 5, 6), "Sales Clerk", 42});dt.Rows.Add(new object[] {1, "Kevin", "Kline", new DateTime(1978, 5, 13), "Sales Clerk", 42});dt.Rows.Add(new object[] {1, "Martha", "Seward", new DateTime(1976, 7, 4), "Sales Clerk", 23});dt.Rows.Add(new object[] {1, "Dora", "Smith", new DateTime(1985, 10, 22), "Trainee", 42});dt.Rows.Add(new object[] {1, "Elvis", "Pressman", new DateTime(1972, 11, 5), "Manager", 15});dt.Rows.Add(new object[] {1, "Johnny", "Cache", new DateTime(1984, 1, 23), "Sales Clerk", 15});dt.Rows.Add(new object[] {1, "Jean", "Hill", new DateTime(1979, 4, 14), "Sales Clerk", 42});dt.Rows.Add(new object[] {1, "Anna", "Smith", new DateTime(1985, 6, 26), "Trainee", 15});ds.Tables.Add(dt);dt = new DataTable("Departments");dt.Columns.Add("DepartmentID", Type.GetType("System.Int32"));dt.Columns.Add("DepartmentName", Type.GetType("System.String"));dt.Rows.Add(new object[] {15, "Men's Clothing"});dt.Rows.Add(new object[] {23, "Women's Clothing"});dt.Rows.Add(new object[] {42, "Children's Clothing"});ds.Tables.Add(dt);ds.Relations.Add("DepartmentEmployee",     ds.Tables["Departments"].Columns["DepartmentID"],     ds.Tables["Employees"].Columns["DepartmentID"]);					
  10. Thêm mã sau đây để các btnCreateJoin_Click sự kiện:
    dsHelper.CreateJoinTable("EmpDept",ds.Tables["Employees"],     "FirstName FName,LastName LName,BirthDate,DepartmentEmployee.DepartmentName Department");dataGrid1.SetDataBinding(ds, "EmpDept");					
  11. Thêm mã sau đây để các btnInsertJoinInto_Click sự kiện:
    dsHelper.InsertJoinInto(ds.Tables["EmpDept"], ds.Tables["Employees"],     "FirstName FName,LastName LName,BirthDate,DepartmentEmployee.DepartmentName Department",    "JobTitle='Sales Clerk'", "DepartmentID");dataGrid1.SetDataBinding(ds, "EmpDept");					
  12. Thêm mã sau đây để các btnSelectJoinInto_Click sự kiện:
    dsHelper.SelectJoinInto("EmpDept2", ds.Tables["Employees"],    "FirstName,LastName,BirthDate BDate,DepartmentEmployee.DepartmentName Department",     "JobTitle='Manager'", "DepartmentID");dataGrid1.SetDataBinding(ds, "EmpDept2");					
  13. Chạy các ứng dụng và sau đó bấm mỗi của các nút. Nhận thấy rằng các DataGrid là dân cư với các bảng và dữ liệu từ các mã.

    LƯU Ý: Bạn chỉ có thể bấm các btnCreateJoin và các btnSelectJoinInto nút một thời gian. Nếu bạn bấm vào một trong các nút này nhiều hơn một thời gian, bạn nhận được một thông báo lỗi bạn định thêm cùng một bảng hai lần. Ngoài ra, bạn phải nhấp vào btnCreateJoin trước khi bạn bấm vào btnInsertJoinInto; Nếu không, các điểm đến DataTable không được tạo ra. Nếu bạn bấm vào các btnInsertJoinInto nút nhiều lần, bạn cư các DataGrid nhãn trùng lặp records.
back to the top

Nâng cao ý tưởng

  • Các ColumnName và các DataType thuộc tính là thuộc tính duy nhất được sao vào các điểm đến DataTable. Bạn có thể mở rộng các CreateTable phương pháp để sao thuộc tính bổ sung, chẳng hạn như các MaxLength bất động sản, hoặc bạn có thể tạo mới chính cột.
  • Các Biểu hiện bất động sản không sao; Thay vào đó, kết quả đánh được sao chép. Vì vậy, bạn không có thêm các lĩnh vực được tham chiếu của biểu thức cho bảng điểm đến. Ngoài ra, điểm đến cột có thể xuất hiện trước đó trong danh sách kết quả hơn bất kỳ các cột cột này phụ thuộc vào cách khác. Bạn có thể sửa đổi các CreateTable phương pháp để sao chép các Biểu hiện (bỏ qua InsertInto cột cột với một Biểu hiện), mặc dù điều này có thể hạn chế được đề cập trước đó trong văn bản này.
  • Bạn có thể hợp nhất các chức năng của các CreateJoinTable, các InsertJoinInto, và các SelectJoinInto phương pháp thành các CreateTable, các InsertInto, và các SelectInto phương pháp. Để thêm thông tin về các CreateTable, các InsertInto, và các SelectInto phương pháp, bấm vào số bài viết dưới đây để xem bài viết trong cơ sở kiến thức Microsoft:
    326009 Thế nào: Thực hiện một tập dữ liệu chọn thành helper lớp trong Visual C#.NET
    Nếu bạn không muốn kết hợp các phương pháp này, nhưng nếu bạn có cả hai bộ phương pháp trong một lớp duy nhất, bạn có thể kích hoạt các CreateJoinTable và các InsertJoinInto phương pháp để xử lý một danh sách các lĩnh vực có sản phẩm nào bằng cách loại bỏ các Ném phát biểu và bởi uncommenting các cuộc gọi đến các CreateTable và các InsertInto phương pháp trong những dòng mã:
        if (FieldList==null)    {        throw new ArgumentException("You must specify at least one field in the field list.");        //return CreateTable(TableName, SourceTable);    }					
    - và -
        if (FieldList==null)    {        throw new ArgumentException("You must specify at least one field in the field list.");        //InsertInto(DestTable, SourceTable, RowFilter, Sort);    }					
back to the top

Khắc phục sự cố

  • Fieldname và danh sách trường bí danh, bộ phận phải tuân thủ DataColumn quy ước đặt tên. Phân tích cú pháp cũng hạn chế các tên, trong đó tên không chứa một khoảng thời gian (.), một dấu phẩy (,), hay một vũ trụ ().
  • Nếu bạn bấm vào một nút nhiều hơn một thời gian, cùng một bảng sẽ được thêm hai lần vào các Số liệu, mà kết quả trong một ngoại lệ. Để làm việc xung quanh vấn đề này, bạn có thể thêm mã vào các ứng dụng thử nghiệm để kiểm tra xem liệu một DataTable cùng tên đã tồn tại. Ngoài ra, bạn có thể tạo các DataSetHelper lớp học mà không có một tham chiếu đến một Số liệu và sau đó ràng buộc các DataGrid.DataSource bất động sản trực tiếp cho các DT biến thay vì bằng cách sử dụng các SetDataBinding phương pháp gọi.
  • Nếu bảng mã nguồn sử dụng các loại dữ liệu tuỳ chỉnh (có nghĩa là, là một lớp học), bạn phải thêm mã vào các InsertJoinInto phương pháp để thực hiện một bản sao sâu của dữ liệu. Nếu không, chỉ là một tài liệu tham khảo được sao chép.
back to the top

Cảnh báo: Bài viết này đã được dịch tự động

Thuộc tính

ID Bài viết: 326080 - Xem lại Lần cuối: 08/28/2011 10:58:00 - Bản sửa đổi: 2.0

  • Microsoft ADO.NET 1.1
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • kbhowtomaster kbsystemdata kbmt KB326080 KbMtvi
Phản hồi
osoft.com/ms.js'><\/script>");