将DataTable记录绑定或拉到C#中的MessageBox文本

时间:2009-05-26 05:12:47

标签: c# datatable messagebox

我正在尝试使消息框文本提供数据表结果。下面是我到目前为止编写的一段代码:

String mystring = comboBox1.Text;             if(mystring.Substring(0,12)==(“公司名称”))             {                 textBox2.Text = mystring.Substring(13);                 ADOCon.ConnectionString = @“Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\ Users \ Name \ Desktop \ SmallBizDb.mdb”;                 ADOCon.Open();

            OleDbCommandBuilder CBuilder = new OleDbCommandBuilder(DAdapter);
            DAdapter = new OleDbDataAdapter("Select Companies.Company_Name From Companies Where Companies.Company_Name = '" + textBox2.Text + "'", ADOCon);

            DAdapter.Fill(DTable);
            MessageBox.Show(DTable.ToString());
            ADOCon.Close();
            ADOCon.Dispose();
        }
        else

基本上,如果最终用户键入“Company Name-Company One”,例如,我想要一个消息框,显示来自sql查询的数据表(DTable)信息。目前,我有“messagebox.Show(DTable.ToString());”,这不起作用。另外,我见过的所有其他示例都使用Row索引,例如“.Rows [0]”,由于不涉及行号,我无法使用,而是数据中的sql“where”语句中的列名和记录名适配器。

这里有很多毛病,所以我的主要问题是如何转换我的数据结果,以便它们显示在消息框中。

谢谢,

DFM

1 个答案:

答案 0 :(得分:2)

我不确定您想要什么,但如果您想在数据表中显示值,您应该能够从中获取数据并以您想要的任何顺序显示它。我想你想要做像

这样的事情
        System.Text.StringBuilder b = new System.Text.StringBuilder();
        foreach (System.Data.DataRow r in dt.Rows)
        {
            foreach (System.Data.DataColumn c in dt.Columns)
            {
                b.Append(c.ColumnName.ToString() + ":" + r[c.ColumnName].ToString());
            }
        }
        MessageBox.Show(b.ToString());

这将遍历返回的所有行,并且对于每一行(结果中的每个公司),以dataTable的ColumnName:ActualValue形式添加详细信息。

当然,我不确定在消息框中显示未知数量的数据,这是一个好主意,这只是你可以做到的一种方式。