我有一个用数据库标题填充的comboBox。
当用户选择标题时,我想在listBox中显示该列的值。
我试图这样做。
private void button3_Click_2(object sender, EventArgs e)
{
listBox1.Items.Clear();
//name of column to display data from
var selectedColumn = comboBox1.Text.ToString();
//dataRow array of data
var selectedColumnItems = aSH_ORDER_DBDataSet1.ASH_PROD_ORDERS.Select(selectedColumn);
//iterate through dataRow and display in listBox
foreach (var columnItem in selectedColumnItems)
{
listBox1.Items.Add(columnItem);
}
}
但是,如果我选择非布尔类型列,则会出现此错误:
"过滤表达式不会计算为布尔术语"
即使我选择了一个布尔列,它也只显示程序的名称。然而,它确实从数据库中获取了一些数据,因为它显示了正确数量的程序名称来自" true"数据库中的术语。
答案 0 :(得分:2)
如果您想要在没有任何条件的情况下显示单个列的内容,您不需要SELECT但只是循环遍历表的行
private void button3_Click_2(object sender, EventArgs e)
{
listBox1.Items.Clear();
//name of column to display data from
var selectedColumn = comboBox1.Text.ToString();
//iterate through dataRow and display in listBox
foreach (DataRow row in aSH_ORDER_DBDataSet1.ASH_PROD_ORDERS.Rows)
{
listBox1.Items.Add(row[selectedColumn].ToString());
}
}
当您需要过滤表的内容时,使用DataTable.Select方法,添加某种可以解析为布尔值的表达式。
DataRow[] result aSH_ORDER_DBDataSet1.ASH_PROD_ORDERS.Select("ColumnName = 'ColumnValue'");
在上面的示例中,我们采用了具有' ColumnValue'的表行的子集。名为' ColumnName'的列中存在的字符串 Select的其他有用用途与创建具有特定订单的新表相关联。请参阅DataColumn.Select和DataTableExtensions.CopyToDataTable文档