سؤال

كيف أقوم بإضافة صفوف برمجياً إلى DataGridTable في C#؟عندما يحدد المستخدم خيارًا، أريد إعادة ملء DataGridTable ببيانات جديدة، والتي أحصل عليها كما هو موضح أدناه:

        connect.Open();
        MySqlCommand comm = connect.CreateCommand();
        comm.CommandText = getCustomerInvoices + customerID + "\'";
        MySqlDataReader r = comm.ExecuteReader();
        while (r.Read())
        {
            DataGridViewRow d = new DataGridViewRow();
            String[] parameters = new String[5];
            parameters[0] = r.GetValue(0).ToString();
            parameters[1] = r.GetValue(1).ToString();
            parameters[2] = r.GetValue(2).ToString();
            parameters[3] = r.GetValue(3).ToString();
            parameters[4] = r.GetValue(4).ToString();
            d.SetValues(parameters);
            invoiceTable.Rows.Add(d);
        }
        connect.Close();

ما يبدو أنه يحدث هو أنني أضيف صفًا جديدًا إلى الجدول، لكن الصفوف القديمة لا تزال موجودة، ولا يبدو أن الصف الجديد يحتوي على أي قيم فيه (مجموعة من مربعات النص الفارغة، وأنا أعلم أن هذا الاستعلام يُرجع نتيجة واحدة في حالة الاختبار الخاصة بي).

هل يمكن لأحد أن يشرح لي ما الذي يجب علي فعله؟

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

المحلول

أعتقد أن Rows.Add() لديه حمل زائد لمجموعة من السلاسل.إذا كنت تقوم بإنشاء مصفوفة من السلاسل على أي حال، فلماذا لا تحاول استخدامها؟أي.بدلاً من:

d.SetValues(parameters);
invoiceTable.Rows.Add(d);

ستستخدم فقط:

invoiceTable.Rows.Add(parameters);

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

نصائح أخرى

وأعتقد أنك تحتاج إلى استدعاء .CreateCells (GridName) قبل الاتصال setvalue

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top