أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

HOW TO: تنفذ فئة مساعد JOIN DataSet في Visual C# .NET

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

اضغط هنا لرابط المقالة باللغة الانجليزية326080
للحصول على إصدار Microsoft Visual Basic .NET من هذه المقالة، راجع
325688HOWTO: تنفذ فئة مساعد JOIN DataSet في Visual Basic .NET
ملاحظة: تحتوي هذه المقالة واحدة من سلسلة من المقالات DataSetHelper. يمكنك دمج التعليمات البرمجية في فئة DataSetHelper المسردة في هذه المقالة مع التعليمات البرمجية التي يتم توفيرها في مقالات DataSetHelper أخرى لجعل فئة واحدة مع مجموعة ميزات شاملة أكثر.

تشير هذه المقالة إلى مساحات أسماء Microsoft .NET Framework فئة مكتبة التالية:
  • System.Data

في هذه المهمة

الموجز
توضح هذه المقالة خطوة بخطوة حول كيفية تنفيذ كيفية استخدام فئة DataSetHelper يتضمن نموذج التعليمة البرمجية لإنشاء كائن DataTable من اثنين أو أكثر من تعريفات DataTable ذات الصلة و نسخ السجلات التي يتم فرز و تصفية من الكائنات DataTable المصدر إلى الوجهة DataTable.

للقيام بذلك، استخدم الطرق العامة التالية:
  • CreateJoinTable
  • InsertJoinInto
  • SelectJoinInto
استدعاء الأسلوب SelectJoinIntoCreateJoinTable وأساليب InsertJoinInto. يمكنك أيضاً استخدام مساعد خاصة أسلوب والبيانات أعضاء لتخزين قائمة الحقول تحليلها.

تتضمن فئة DataSetHelper متغير عضو DataSet. بشكل اختياري، يمكنك تعيين موجودة DataSet إلى متغير العضو DataSet. إذا كان متغير العضو يشير إلى صالح DataSet ، تتم إضافة أية كائنات DataTableCreateJoinTable أو أسلوب SelectJoinInto بإنشاء إلى DataSet. في كلتا الحالتين، استدعاء الأسلوب بإرجاع مرجع إلى كائن DataTable. أسلوب InsertJoinInto يتطلب هدف موجودة DataTable ولا لا يرجع أي شيء.

للحصول على مزيد من المعلومات حول الكائنات DataSet انقر فوق رقم المقالة أدناه لعرضها في "قاعدة المعارف لـ Microsoft:
313485INFO: التخطيط لـ ADO.NET DataSet DataView DataViewManager
back to the top

متطلبات

توضح القائمة التالية الأجهزة الموصى بها برامج البنية الأساسية للشبكة و حزم الخدمات المطلوبة:
  • Microsoft Windows XP أو Windows 2000 أو Windows NT 4.0 Service Pack 6a
  • Microsoft Visual Studio .NET
تفترض هذه المقالة كنت معتاداً على المواضيع التالية:
  • بناء جملة C# .NET المرئية
  • أساسيات ADO.NET وبناء الجملة
back to the top

فئة DataSetHelper Shell

التعليمات البرمجية في هذا القسم بتعريف فئة shell التي إضافة بكافة المقالات DataSetHelper وأساليب للمتغيرات الخاصة بالأعضاء.
  1. بدء تشغيل Visual Studio .NET.
  2. من القائمة ملف، أشر إلى جديد ثم انقر فوق المشروع.
  3. في مربع الحوار مشروع جديد ، انقر فوق Visual C# مشاريع ضمن أنواع Project ثم انقر فوق مكتبة الفئات ضمن قوالب.
  4. في المربع الاسم، اكتب DataSetHelper.
  5. استبدال رمز الفئة التعليمة البرمجية التالية:
    public class DataSetHelper{    public DataSet ds;    public DataSetHelper(ref DataSet DataSet)    {	ds = DataSet;    }    public DataSetHelper()    {	ds = null;    }}					
    يمكن استخدام جهازي تساعد التحميلات الزائدة عن المنشئ إنشاء مثيل من الفئة مع أو بدون مرجع صالح DataSet. للحصول على فئة التي تحتوي على مرجع صالح DataSet الكائنات DataTable التي تقوم بإرجاع الأساليب يتم إضافة تلقائياً إلى DataSet.
back to the top

محلل قائمة الحقول

يحتوي هذا القسم على رمز محلل قائمة حقل. يتم استخدام بنية تحليلها بحيث CreateJoinTable وأساليب InsertJoinInto لا يلزم إعادة التوزيع قائمة الحقول. يجب أن هذه الطرق إعادة التوزيع قائمة الحقول إذا تسمى من أسلوب SelectJoinInto أو من التعليمات البرمجية الخاصة بك. يتم تخزين قائمة الحقول الموزعة وقائمة الحقول لم يتم تحليلها في خاص للمتغيرات الخاصة بالأعضاء الفئة DataSetHelper.
  1. إضافة تعريف الفئة الخاصة التالية في الفئة DataSetHelper التي قمت بإنشائها في قسم "DataSetHelper Shell Class":
    private class FieldInfo{    public string RelationName;    public string FieldName;	//source table field name    public string FieldAlias;	//destination table field name    public string Aggregate;}					
    ملاحظة: هذه الفئة الشائعة إلى مقالات أخرى DataSetHelper وتحتوي بعض الحقول التي لا تستخدم هذه المقالة.

  2. إضافة متغيرات عضو خاص التالية إلى تعريف الفئة مباشرة بعد تعريف DataSet:
    private System.Collections.ArrayList m_FieldInfo; private string m_FieldList; 					
  3. إضافة أسلوب خاص التالي إلى تعريف الفئة. هذا الأسلوب هو نفس الطريقة المستخدمة في مقالات أخرى DataSetHelper.
    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

أسلوب CreateJoinTable

يحتوي هذا القسم على رمز أسلوب CreateJoinTable.

اصطلاح استدعاء الأسلوب CreateJoinTable يكون التالي:
dt = dsHelper.CreateJoinTable("TestTable", ds.Tables["Employees"],    "FirstName FName,LastName LName,DepartmentEmployee.DepartmentName Department");				
بإنشاء هذا نموذج مكالمة جديدة DataTable مع TableName TestTable و الحقول الثلاثة (FName LName القسم). تحتوي هذه الحقول الثلاثة نفس نوع كـ الاسم الأول في حقل LastName في جدول Employees والحقل DepartmentName في الجدول الأصل الذي يتم الوصول إليه من خلال الكائن DepartmentEmployee DataRelation البيانات.

استخدم بناء الجملة التالي لتحديد الحقول في قائمة الحقول:
[relationname.]fieldname[ alias], ...				
لاحظ التالي بناء الجملة التالي:
  • ColumnName وخصائص DataType هي الخصائص فقط التي يتم نسخها إلى الوجهة DataTable.
  • يتم نسخ النتيجة تقييمها مع الحقول التي تحتوي على تعبير.
  • يمكنك إعادة تسمية حقل في الوجهة DataTable بواسطة تحديد اسم مستعار.
  • يمكن أن تحتوي قائمة الحقول على مجموعة فرعية أسماء الحقول التي يتم سردها في ترتيب مختلف عن الترتيب في مصدر DataTable. في حالة عدم وجود قائمة الحقول تم إلقاء استثناء.
  • يجب أن ترتبط DataRelation الجداول الأصل. على سبيل المثال، إذا كنت ترغب في إنشاء جدول يضم حقول في العملاء "،" على الموظفين "و" جداول الطلبات التي يجب أن استخدام الجدول "طلبيات" Orders الجدول المصدر والإشارة ثم الحقول في العملاء والجداول الموظفين من العلاقات.
استدعاء الأسلوب CreateJoinTable ، أضف الأسلوب التالي إلى فئة DataSetHelper الذي قمت بإنشائه في قسم "DataSetHelper Shell Class":
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

أسلوب InsertJoinInto

يحتوي هذا القسم على التعليمات البرمجية للأسلوب InsertJoinInto. أسلوب InsertJoinInto بنسخ السجلات التي يتم فرز و تصفية من جدول المصدر المتعلقة الجداول إلى الجدول الوجهة. عند استدعاء خاصية ParseFieldList يمكن تحليل القوائم التي تم مسبقاً تحليل حالة توفر هذه القوائم. في حالة عدم وجود قائمة الحقول تم إلقاء استثناء.

اصطلاح استدعاء الأسلوب InsertJoinInto يكون التالي:
dsHelper.InsertJoinInto(ds.Tables["TestTable"], ds.Tables["Employees"],     "FirstName FName,LastName LName,DepartmentEmployee.DepartmentName Department",     "EmployeeID<5", "BirthDate");				
نموذج استدعاء نسخ سجلات من الموظفين DataTable (و الحقل DepartmentName ذات الصلة DataTable) إلى TestTable DataTable الذي تمت تصفيته على "EmployeeID < 5" و يتم فرز حسب BirthDate.

ملاحظة: يتم تطبيق عامل التصفية وتعبيرات الفرز فقط إلى الجدول المصدر ولا يتم تطبيقها على أي جداول مرتبطة.

استدعاء الأسلوب InsertJoinInto ، أضف الأسلوب التالي إلى فئة DataSetHelper الذي قمت بإنشائه في قسم "DataSetHelper Shell Class":
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

أسلوب SelectJoinInto

يحتوي هذا القسم على رمز أسلوب SelectJoinInto. هذا الأسلوب تركيبة من CreateJoinTable وأساليب InsertJoinInto. إنشاء أسلوب SelectJoinInto جديد DataTable استناداً إلى DataTable الكائنات والنسخ السجلات الموجودة التي يتم فرز و تصفية إلى DataTable جديد.

اصطلاح استدعاء الأسلوب SelectJoinInto يكون التالي:
dt = dsHelper.SelectInto("TestTable", ds.Tables["Employees"],     "FirstName FName,LastName LName,DepartmentEmployee.DepartmentName Department", "EmployeeID<5", "BirthDate");				
بإنشاء هذه المكالمة نموذج DataTable باسم TestTable مع الحقول الثلاثة. تستند هذه الحقول الثلاثة في الاسم الأول ثم الحقول LastName الموظفين DataTable والحقل DepartmentName DataTable المشار إليها من خلال DepartmentEmployee DataRelation. ثم نسخ هذه العينة السجلات من الموظفين DataTable إلى TestTable DataTable ، والذي يتم تصفية على "EmployeeID < 5" و يتم فرز حسب BirthDate.

ملاحظة: يتم تطبيق عامل التصفية وتعبيرات الفرز فقط إلى الجدول المصدر ولا يتم تطبيقها على الجداول المرتبطة.

استدعاء الأسلوب SelectJoinInto ، أضف الأسلوب التالي إلى فئة DataSetHelper الذي قمت بإنشائه في قسم "DataSetHelper Shell Class":
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

اختبار التطبيق

  1. وحفظ التحويل البرمجي فئة DataSetHelper الذي قمت بإنشائه في الأقسام السابقة.
  2. اتبع الخطوات التالية لإنشاء Visual C# Windows تطبيق جديد:
    1. بدء تشغيل Visual Studio .NET.
    2. من القائمة ملف، أشر إلى جديد ثم انقر فوق المشروع.
    3. في مربع الحوار مشروع جديد ، انقر فوق Visual C# مشاريع ضمن أنواع Project ثم انقر فوق تطبيق Windows ضمن قوالب.
  3. في "مستكشف الحلول" انقر بزر الماوس الأيمن فوق الحل ومن ثم انقر فوق إضافة Project الموجودة. إضافة مشروع DataSetHelper.
  4. من القائمة المشروع انقر فوق إضافة مرجع.
  5. في مربع الحوار إضافة المرجع، انقر فوق علامة التبويب مشاريع ثم قم بإضافة مرجع إلى المشروع DataSetHelper لتطبيق نموذج Windows.
  6. في مصمم النموذج اسحب عنصر تحكم DataGrid وعناصر زر ثلاثة من مربع الأدوات إلى النموذج. اسم أزرار btnCreateJoin و btnInsertJoinInto و btnSelectJoinInto. الاحتفاظ الاسم الافتراضي لعنصر التحكم DataGrid (dataGrid1).
  7. في التعليمات البرمجية "النموذج" ، أضف جملة استخدام التالية إلى أعلى إطار التعليمات البرمجية:
    using System.Data;					
  8. إضافة تعريفات المتغير التالي إلى تعريف النموذج:
    DataSet ds; DataSetHelper.DataSetHelper dsHelper;					
  9. قم بإضافة التعليمات البرمجية التالية إلى الحدث Form_Load:
    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. قم بإضافة التعليمات البرمجية التالية إلى الحدث btnCreateJoin_Click:
    dsHelper.CreateJoinTable("EmpDept",ds.Tables["Employees"],     "FirstName FName,LastName LName,BirthDate,DepartmentEmployee.DepartmentName Department");dataGrid1.SetDataBinding(ds, "EmpDept");					
  11. قم بإضافة التعليمات البرمجية التالية إلى الحدث btnInsertJoinInto_Click:
    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. قم بإضافة التعليمات البرمجية التالية إلى الحدث btnSelectJoinInto_Click:
    dsHelper.SelectJoinInto("EmpDept2", ds.Tables["Employees"],    "FirstName,LastName,BirthDate BDate,DepartmentEmployee.DepartmentName Department",     "JobTitle='Manager'", "DepartmentID");dataGrid1.SetDataBinding(ds, "EmpDept2");					
  13. قم بتشغيل التطبيق ثم ثم انقر فوق كل من الأزرار. لاحظ تعبئة DataGrid مع وجداول البيانات من التعليمات البرمجية.

    ملاحظة: يمكنك يمكن النقر فقط فوق btnCreateJoin والأزرار btnSelectJoinInto مرة واحدة. إذا قمت بالنقر فوق أي من هذه الأزرار أكثر من مرة واحدة ، تتلقى رسالة خطأ محاولة إضافة نفس الجدول مرتين. بالإضافة إلى ذلك، يجب عليك النقر فوق btnCreateJoin قبل النقر فوق btnInsertJoinInto; وإلا، الوجهة DataTable لا يتم إنشاء. إذا نقرت فوق الزر btnInsertJoinInto عدة مرات ملء DataGrid مع سجلات مكررة.
back to the top

أفكار التحسين

  • ColumnName وخصائص DataType هي الخصائص فقط التي يتم نسخها إلى الوجهة DataTable. يمكنك توسيع أسلوب CreateTable لنسخ خصائص إضافية، مثل الخاصية MaxLength أو يمكنك إنشاء أعمدة المفاتيح الجديدة.
  • لم يتم نسخ الخاصية Expression; بدلاً من ذلك، يتم نسخ النتيجة تقييمها. ولذلك، لا يلزم إضافة الحقول التي يتم الرجوع إليها بواسطة التعبير إلى الجدول الوجهة. بالإضافة إلى ذلك، يمكن أن يظهر العمود الوجهة مسبقًا في القائمة نتائج من أي من الأعمدة التي تعتمد هذا العمود على خلاف ذلك. يمكنك تعديل أسلوب CreateTable لنسخ في التعبير (العمود InsertInto تجاهل الأعمدة التي تحتوي تعبير) ، على الرغم من أن هذه عرضة قيود المذكورة مسبقًا في هذه الفقرة.
  • يمكنك دمج وظيفة CreateJoinTableInsertJoinInto وأساليب SelectJoinInto في CreateTableInsertInto وأساليب SelectInto. للحصول على معلومات إضافية حول CreateTableInsertInto وأساليب SelectInto انقر فوق رقم المقالة أدناه لعرضها في "قاعدة المعارف لـ Microsoft:
    326009HOWTO: تنفذ فئة مساعد SELECT INTO DataSet في Visual C# .NET
    إذا لم تكن تريد دمج هذه الطرق لكن إذا كان لديك كلتا المجموعتين من أساليب في فئة واحدة يمكنك تمكين CreateJoinTable وأساليب InsertJoinInto لمعالجة لقائمة الحقول فارغة قبل إزالة عبارات ' Throw ومن قبل uncommenting استدعاءات CreateTable وأساليب InsertInto في سطور التعليمات البرمجية التالية:
        if (FieldList==null)    {        throw new ArgumentException("You must specify at least one field in the field list.");        //return CreateTable(TableName, SourceTable);    }					
    - و -
        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

استكشاف الأخطاء وإصلاحها

  • في اسم وأجزاء الاسم المستعار من قائمة الحقول يجب أن يتوافق مع اصطلاحات تسمية DataColumn. تقييد المحلل اللغوي أيضاً الأسماء الموجودة في ذلك يجب أن يحتوي الاسم على نقطة (.) أو فاصلة (،) أو () مساحة.
  • إذا قمت بالنقر فوق زر أكثر من مرة واحدة ، تتم إضافة نفس الجدول مرتين إلى DataSet ، الذي ينتج استثناء. كمحاولة للتغلب على هذه المشكلة يمكنك إضافة تعليمة برمجية إلى تطبيق اختبار للتحقق ما إذا كان DataTable بنفس الاسم موجود مسبقاً. بشكل بديل، يمكنك إنشاء فئة DataSetHelper دون مرجع إلى DataSet وإعادة ثم ربط الخاصية DataGrid.DataSource مباشرة إلى متغير dt عوضاً عن طريق استخدام استدعاء الأسلوب SetDataBinding.
  • إذا كان يستخدم الجدول المصدر أنواع البيانات المخصصة (أي، فئة) ، يجب إضافة رمز إلى الأسلوب InsertJoinInto لإجراء نسخة عميق من البيانات. وإلا، يتم نسخ مرجع فقط.
back to the top

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 326080 - آخر مراجعة: 09/03/2003 23:26:44 - المراجعة: 2.3

Microsoft ADO.NET 1.1, Microsoft ADO.NET 1.0, Microsoft Visual C# .NET 2003 Standard Edition, Microsoft Visual C# .NET 2002 Standard Edition

  • kbmt kbhowtomaster kbsystemdata KB326080 KbMtar
تعليقات