【发布时间】:2016-12-16 17:48:12
【问题描述】:
我正在尝试过滤已绑定到数据集的 datagridview。问题是,当我在文本框中输入数据时,应用程序停止并且错误是我尝试过滤的列不存在。我尝试使用字符串查询填充 datagridview 并且过滤工作正常,但我无法更新 datagridview(我不知道为什么)。这就是为什么我用数据集而不是查询来填充它。有什么建议么?这就是我所拥有的:
DataTable dt = new DataTable("Items");
private void LoadDataGrid()
{
using (SqlDataAdapter da = new SqlDataAdapter("SELECT Items.ItemID AS #, Items.SerialNo AS 'SERIALNO', Items.Description AS DESCRIPTION, Items.MaxVoltage, Items.FrameSize, Items.ArrivalDate, Items.DepartureDate, Items.Notes, Items.MechType, Items.[Fix-Drawout], CONCAT(Location.Rack, Location.Row, Location.Columnn, Location.Position) AS LOCATION, ItemStatus.Description AS STATUS, Type.Description AS TYPE, Manufacturers.Description AS MANUFACTURERS FROM Items INNER JOIN Location ON Items.LocationID = Location.LocationID INNER JOIN ItemStatus ON Items.Status = ItemStatus.StatusID INNER JOIN Type ON Items.TypeID = Type.TypeID INNER JOIN Manufacturers ON Items.ManufacturerID = Manufacturers.ManufacturerID", AEAcnn))
{
da.Fill(dt);
dataGridView1.DataSource = dt;
}
}
这是我正在使用的过滤器表达式(带有组合框)
private void txtFilter_KeyPress(object sender, KeyPressEventArgs e)
{
if (cmbFilterSearch.Text == "TYPE")
{
DataView dv = dt.DefaultView;
dv.RowFilter = string.Format("TYPE LIKE '%{0}%'", textBox14.Text);
dataGridView1.DataSource = dv.ToTable();
}
}
当找不到列 TYPE 时,应用程序崩溃,即使名称实际上是 TYPE。
【问题讨论】:
-
如果您包含您的代码尝试供人们审查,这个问题会更好。
-
我的错!这就是我所拥有的。
-
您没有显示您正在使用的过滤器表达式
-
对!就是这样。
-
在类型周围加上括号。
"[TYPE] LIKE '%{0}%'"