如何使用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);
}
获取值
作为一个选项,您可以通过以下方式选择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());