ahmed_sa Ответов: 2

Как генерировать метки из datatable на основе записей, существующих в datatable ?


Проблема

как получить данные из таблицы данных и повторить их в соответствии с количеством строк ?

мое имя datatable GetChecked

что мне нужно, так это сгенерировать метку для MemberCode в форме и повторить ее на основе количества записей .

Предположим, что datatable имеет 4 записи от MemberCode 1001 до 1004, тогда это будет так, как показано ниже

форма окна showdata

MemberCode : 1001                             Membercode : 1002

MemberCode : 1003                             Membercode : 1004


Итак, как сделать дизайн выше с помощью csharp windows form visual studio 2015 ?

Что я уже пробовал:

public DataTable GetChecked()
      {
          DataTable table = new DataTable();
          table.Columns.Add("MemberCode", typeof(string));
          

          for (int i = 0; i < dtDisplayDataPayment.Rows.Count; i++)
          {

              
                  DataRow newRow = table.NewRow();
                  newRow["MemberCode"] = Utilities.ObjectConverter.ConvertToString(dtDisplayDataPayment.Rows[i]["MemberCode"]);



                    
                  table.Rows.Add(newRow);
              }
          

          return table;


      }

2 Ответов

Рейтинг:
1

Maciej Los

Если я вас хорошо понимаю...

DataTable dt = GetChecked();
int h = 24;
for(int i=0; i<dt.Rows.Count; i++)
{
    DataRow r = dt.Rows[i];

    Label lbl = new Label();
    lbl.Name = string.Format("Label", i);
    lbl.Location = new System.Drawing.Point(20, h*i+8);
    lbl.Width = 120;
    lbl.Height = h;
    lbl.Parent = this; //or this.GroupBox1;
    lbl.Text = r["MemberCode"].ToString();
}


НО...

Я бы посоветовал использовать Элемент управления datagridview [^] для такого требования для набора резона. Одним из них является простой способ привязки и отображения данных:
this.DataGridView1.DataSource = GetChecked();


Рейтинг:
0

RickZeeland

Смотрите пример здесь: c# - как динамически создавать множество меток и текстовых полей в зависимости от значения целочисленной переменной? - переполнение стека[^]

Вместо использования this.Controls.Add() который размещает все метки непосредственно на форме, я бы посоветовал использовать панель или GroupBox в качестве контейнера:

this.GroupBox1.Controls.Add(labels[i]);