سؤال

أحاول ربط DataTable بأكورديون ووجدت أنه إذا قمت باسترداد DataTable من قاعدة بيانات باستخدام محول جدول فإنه يرتبط بالأكورديون تمامًا ولكن ما أريد فعله هو إنشاء جدول وهمي (لأغراض الاختبار إذا كنت لا يمكنني الوصول إلى قاعدة البيانات الخاصة بي) رمز إنشاء الجدول الوهمي موجود أدناه:

    DataTable table2 = new DataTable("articletable");
    table2.Columns.Add("articleID");
    table2.Columns.Add("title");
    table2.Columns.Add("content");

    DataRow row = table2.NewRow();
    row[0] = "1";
    row[1] = "article name";
    row[2] = "article contents go here";
    table2.Rows.Add(row);

عندما أحاول ربط البيانات بهذا الجدول ولكن لا يتم عرض الأكورديون.يمكنني ربطه بعرض الشبكة أو عرض التفاصيل ولكن ليس بالأكورديون.

هل كانت مفيدة؟

المحلول

بعد 4 ساعات من ضرب رأسي بالحائط، اكتشفت أن حقل DataSource صعب الإرضاء للغاية.

هذا هو الكود الخاص بي:

DataSet ds = new DataSet();

        DataTable dt = new DataTable();
        dt.Columns.Add("Name");
        dt.Columns.Add("Branch");
        dt.Columns.Add("Officer");
        dt.Columns.Add("CustAcct");
        dt.Columns.Add("Grade");
        dt.Columns.Add("Rate");
        dt.Columns.Add("OrigBal");
        dt.Columns.Add("BookBal");
        dt.Columns.Add("Available");
        dt.Columns.Add("Effective");
        dt.Columns.Add("Maturity");
        dt.Columns.Add("Collateral");
        dt.Columns.Add("LoanSource");
        dt.Columns.Add("RBCCode");

        dt.Rows.Add(new object[] { "James Bond, LLC", 120, "Garrison Neely", "123 3428749020", 35, "6.000", "$24,590", "$13,432",
            "$12,659", "12/13/21", "1/30/27", 55, "ILS", "R"});

        ds.Tables.Add(dt);

        accReportData.DataSourceID = null;
        accReportData.DataSource = ds.Tables[0].DefaultView;
        accReportData.DataBind();

تبين أن الأكورديون يحب فقط الارتباط بالعرض الافتراضي لجدول مجموعة البيانات.لقد حاولت الارتباط بـ DataTable (dt) فقط وفشلت.حتى dt.DefaultView فشل.بمجرد إضافتها إلى DataSet، يتم ربطها مثل البطل.مزعج جداً، مع ضياع الوقت.أعلم أنك ربما نسيت هذا منذ فترة طويلة، ولكني أردت أن أجعله متاحًا للباحثين في المستقبل. يجب أن يكون Accordion.DataSource مرتبطًا بـ DataSet.Table.DefaultView حتى يعمل.

نصائح أخرى

تأكد من تحديد نوع للأعمدة في table2.Columns.Add (...)

وبالإضافة إلى ذلك، كما رأينا في الجواب التالي:

https://stackoverflow.com/a/6108163/637903

ويمكنك ربط التحكم الأكورديون لDataTableReader شيدت من الأصلي DataTable و

accReportData.DataSource = new System.Data.DataTableReader(ds.Tables[0]);
accReportData.DataBind();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top