如何使用DataGridVeiw的Column的数据填充ListBox

本文关键字:填充 ListBox 数据 Column DataGridVeiw 何使用 | 更新日期: 2023-09-27 17:58:12

我有两个windows窗体。在第一个表单中,我有一个DataGridView和搜索按钮。当我单击搜索时,网格将由存储过程返回的DataTable中的数据填充。我需要从这个DataGridView中提取一列,并在另一个表单中填写一个Listbox
如何从第一个表单的索引3的列的值中填充第二个表单中的ListBox

DT = rec.AdvancdSearch(txtname.Text.ToString(),int.Parse(cmblocation.SelectedValue.ToString()), cmbstatus.Text.ToString(), txtfrom.Text.ToString(), txtto.Text, cbmgendr.Text, int.Parse(cbmjob.SelectedValue.ToString()));
dataGridView1.DataSource = DT;
if (dataGridView1.Rows.Count < 2)
{
    MessageBox.Show("عذراً لم يتم العثور على اى نتائج بحث مطابقة للبينات المدخلة", "عملية البحث", MessageBoxButtons.OK, MessageBoxIcon.Information);
    lblcount.Text = "لا يوجد نتائج";
}
else
{
    lblcount.Text = "نتائج البحث 'n" + (dataGridView1.Rows.Count-1);
}

如何使用DataGridVeiw的Column的数据填充ListBox

获取值

作为一个选项,您可以通过以下方式选择DataGridView索引3处的列值:

var list = dataGridView1.Rows.Cast<DataGridViewRow>()
                        .Where(x => !x.IsNewRow)
                        .Select(r => r.Cells[3].Value.ToString())
                        .ToList();

您还可以从DataTable:中获取值

var list = dt.Rows.Cast<DataRow>().Select(r => r.Field<string>(3)).ToList();

将值传递到另一个表单

在获得列表后,您应该通过这种方式将值传递到另一个表单:

var f2 = new Form2(list);
f2.Show();

为了能够编写var f2 = new Form2(list);并将列表传递给您的第二个表单,您应该更改该表单的构造函数以接受类型为List<string>:的值

List<string> list;
public Form2 (List<string> l)
{
    InitializeComponent();
    list= l;
    this.listBox1.DataSource = list;
}

在列表框中显示

正如你在上面看到的,在第二种形式中,它足以使用:

this.listBox1.DataSource = list;

您还可以添加项目:

this.listBox1.Items.AddRange(list.ToArray());