我有一个名为recordID
的文本框
我已使用以下内容声明了一个名为ID
的变量:
int ID = Convert.ToInt32(recordID.Text);
最后,我有一些代码可以在单击按钮后刷新gridview,它可以完美地运行,但是,会带回表中的所有内容:
using (SqlDataAdapter a = new SqlDataAdapter("SELECT * FROM TEST_TABLE", conn))
{
// Use DataAdapter to fill DataTable
DataTable t = new DataTable();
a.Fill(t);
// Render data onto the screen
gridSelectID.DataSource = t;
}
我需要在查询被更改时更改它,以便它添加一个位置并将其过滤到上面提到的ID的值(取自recordID.Text,这是一个文本框)
我试过这个:
using (SqlDataAdapter a = new SqlDataAdapter("SELECT * FROM TEST_TABLE WHERE ID = filter", conn))
{
int filter = ID;
// Use DataAdapter to fill DataTable
DataTable t = new DataTable();
a.Fill(t);
// Render data onto the screen
gridSelectID.DataSource = t;
}
但它抱怨Invalid Column name 'filter'
我需要这个来通过在代码顶部声明的ID来过滤查询。
答案 0 :(得分:5)
您无法自动将变量绑定到命令。您需要手动执行此操作,例如:
using (SqlDataAdapter a = new SqlDataAdapter("SELECT * FROM TEST_TABLE WHERE ID = @filter", conn))
{
int filter = ID;
a.SelectCommand.Parameters.AddWithValue("@filter", filter);
答案 1 :(得分:1)
using (SqlDataAdapter a = new SqlDataAdapter(string.Format("SELECT * FROM TEST_TABLE WHERE ID = '{0}'",ID), conn)) {
// Use DataAdapter to fill DataTable
DataTable t = new DataTable();
a.Fill(t);
// Render data onto the screen
gridSelectID.DataSource = t;
}