我有两个窗体。在第一种形式中,我有一个DataTable
和搜索按钮。我点击搜索,网格填充来自存储过程返回的DataGridView
的数据。我需要从此Listbox
中获取单列并以另一种形式填写ListBox
如何从第一种形式的索引3处的列值中以第二种形式填充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);
}
?
{{1}}
答案 0 :(得分: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;
}
在ListBox中显示
如上所示,在第二种形式中,它足以使用:
this.listBox1.DataSource = list;
您还可以添加项目:
this.listBox1.Items.AddRange(list.ToArray());