搜索数据集并在文本框中显示多个结果(行)

本文关键字:结果 显示 数据集 文本 搜索 | 更新日期: 2023-09-27 18:16:24

我想搜索我的数据集的客户名称,这个名称将出现不止一次整个数据集,这意味着将有超过1个结果(多行返回)

单击搜索按钮时,打开form2,理论上应该显示包含客户名称的所有行,但我如何实现这一点?

我可以让它毫无问题地显示1行,但我如何让它显示所有行,以及文本框中的数据。

目前我正在使用foreach循环来填充文本框返回的数据,但这只需要从我的数据集中的1行数据。

有一种方法,我可以使我的表单自动生成文本框和填充他们将从数组的所有数据?当我现在运行我的查询时,它用foreach的最后一次旋转填充form2上的文本框。

DB样本

感谢您的帮助

亚当

 DataRow[] returnedRows;
        returnedRows = ds.Tables["Table_Data_1"].Select("cust_name='" + searchFor + "'");
        foreach (DataRow returned in returnedRows)
        {
            tbName.Text = returned[1].ToString();
            tbAddress.Text = returned[2].ToString();
            tbPhone.Text = returned[3].ToString();
            tbMake.Text = returned[4].ToString();
            tbModel.Text = returned[5].ToString();
            tbReg.Text = returned[6].ToString();
            tbYear.Text = returned[7].ToString();
            tbParts1.Text = returned[8].ToString();
            tbParts2.Text = returned[9].ToString();
            tbParts3.Text = returned[10].ToString();
            tbParts3.Text = returned[11].ToString();
        }

搜索数据集并在文本框中显示多个结果(行)

只显示一个值的原因是要将文本框的文本设置为所选的每一行的新值。您可以更改代码,改为在文本框中添加文本:

tbName.Text += returned[1].ToString() + Environment.NewLine;

或者你可以将它绑定到DataGridView,它被设计用来显示表格数据。假设DataGridView被命名为customerDataView,

returnedRows = ds.Tables["Table_Data_1"].Select("cust_name='" + searchFor + "'");
var newTable = returnedRows.CopyToDataTable();
BindingSource bindSource = new BindingSource();
bindSource.DataSource = newTable;
var customerDataView.DataSource = bindSource;

可以动态生成文本框大概是这样的

foreach (DataRow returned in returnedRows)
{
    TextBox txt = new TextBox();
    txt.ID = "textBox1"; //generate id dinamically can be a count
    txt.Text = returned[1].ToString();
    form1.Controls.Add(txt);
}

你实现循环的方式覆盖了每个交互中的数据

我根据这篇文章改进了示例代码

https://stackoverflow.com/a/2229040/5252904 @rahul的回答