0

我想根据文本框过滤数据网格上的行,并且我正在使用存储过程,我的代码如下:

我在存储过程中编写了查询以供选择:

if @operation =1
select * from Item_Configuration where itemId like '%' + itemId + '%'

和 C# 代码是

private void btnSrch_Click(object sender, EventArgs e)
{
    SqlConnection conn1 = new SqlConnection();

    try
    {
        SqlCommand selectItem = new SqlCommand("Item_Configuration_SP", conn1);
        selectItem.CommandType = CommandType.StoredProcedure;


      if (itemId.Text=="")
            {
                selectItem.Parameters.Add("@operation", SqlDbType.VarChar);
                selectItem.Parameters["@operation"].Value = 1;

                selectItem.Parameters.Add("@itemId", SqlDbType.VarChar);
                selectItem.Parameters["@itemId"].Value = itmId.Text;

            SqlDataReader myReader = selectItem.ExecuteReader();
            List<Item> list = new List<Item>();
            while (myReader.Read())
            {
                if (myReader.HasRows)
                {
                    Item item = new Item();
                    item = MapItem(myReader, item);
                    list.Add(item);
                }
            }

            dataGridView1.DataSource = list;
        }
    }
}

现在我在网格上得到所有记录记录没有根据文本框过滤我找不到我错的地方请帮助

4

2 回答 2

1

鉴于您使用的是 Sql Server,您的查询已磨损

而不是这个

select * from Item_Configuration where itemId = '%' + itemId + '%'

肯定是

select * from Item_Configuration where itemId LIKE '%' + itemId + '%'
于 2012-07-23T11:22:55.867 回答
0

此外,如果您从文本框的输入中获取操作 ID,则必须添加它

selectItem.Parameters["@operation"].Value = txtbox.Text.Trim();
于 2012-07-23T11:24:58.627 回答