首页 文章

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

提问于
浏览
0

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

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

我可以让它显示1行没有问题,但我如何使它显示所有行,以及文本框中的数据 .

目前我正在使用foreach循环来填充返回数据的文本框,但这只会从我的DataSet中的1行获取数据 .

有没有办法让我的表单自动生成文本框并填充它们来自数组的所有数据?当我在此刻运行查询时,它会使用foreach的最后一次旋转填充form2上的文本框 .

DB Sample

感谢任何帮助

亚当

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();
        }

2 回答

  • 0

    您只出现一个值的原因是您要将文本框的文本设置为您选择的每一行的新值 . 您可以更改代码,而不是添加到文本框中的文本:

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

    或者您可以将其绑定到DataGridView,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;
    
  • 1

    你可以生成文本框dinamicaly它是这样的

    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提供的答案 .

相关问题