سؤال

لديّ DataTable Being In Induary يمكن أن يكون له أي عدد معين من الأعمدة ديناميكيًا. لا بد لي من تجميع الصفوف داخل GridView عن طريق إضافة Tablerow جديد استنادًا إلى العمود الأول. هذا المطلب يعني أنه لا يمكنني استخدام AutogenerateColumns. لقد قمت بإنشاء جدول داخل itemTemplate الذي أستخدمه لربط الصفوف/الخلايا مع الأعمدة في حدث ItemDatabound. هذا يعمل بشكل جيد ويفعل ما أحتاج إلى القيام به. المشكلة التي لدي هي أنه لا يمكنني ربط رأسي باسم الأعمدة. عندما أتحقق من أن Rowtype هو رأس على itemDatabound ، فلن يكون لدي e.row.dataitem متاح لأن هذا يبدأ في صف البيانات الأول. نتيجة لذلك ، لا يمكنني التحقق من اسم العمود الذي أريد طباعته إلى خلية الرأس في هذا العمود.

فيما يلي الرمز الذي أستخدمه على dataRow (رمز في delphi.net ولكن يجب أن تكون قادرًا على الحصول على gyst إذا كنت تستخدم C# أو VB أيضًا):

if (e.Row.RowType = DataControlRowType.DataRow) then begin

    if panlViewAllResults.Visible then begin
      for i := 0 to lDataRow.DataView.Table.Columns.Count - 1 do begin
        if Assigned(lDataRow.Item[i]) then begin
          lCell := TableCell.Create;
          lCell.Text := lDataRow.Item[i].ToString;
          lRow1.Controls.Add(lCell);
        end;
      end;

      lTable.Controls.Add(lRow1);
    end;   
end;

اعتقدت أنه يمكنني فعل شيء مثل هذا للرأس. ولكن لا يظهر:

  if (e.Row.RowType = DataControlRowType.Header) then begin
    for i := 0 to lDataRow.DataView.Table.Columns.Count - 1 do begin
            if Assigned(lDataRow.Item[i]) then begin
              lCell := TableCell.Create;
              lCell.Text := lDataRow.DataView.Table.Columns[i].ColumnName;
            end;
    end;
  end;

على أمل أن يتمكن شخص ما من إلقاء بعض الضوء على هذا. أنا عالق قليلاً على أقل تقدير.

تيا لويد

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

المحلول

يمكنك القيام بهذا المنطق في الحدث ondatabound. ستحتاج إلى حلقة من خلال جميع صفوفك وستتمكن من الوصول إلى جميع البيانات التي تحتاجها في هذه المرحلة.

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