0

tbSearch.Text是页面上的文本框值,searchText是在下拉列表框选择索引更改事件时收到的字符串数据类型值。

我从文本框和下拉列表框中完美地接收到这两个值,但我无法从表中搜索数据。

存储过程:

ALTER PROCEDURE showData
@search varchar(MAX)=NULL,
@status varchar(50)=NULL
AS
BEGIN   
    if @status = 'LANDLINE' and @search != ''
    BEGIN
       SELECT c.contid    AS ID, 
          c.contname  AS Person, 
          b.bustype   AS Business, 
          c.comp      AS Company, 
       c.email1    AS Email, 
       c.email2    AS Email, 
       c.website   AS Website, 
       c.landline1 AS Landline, 
       c.landline2 AS Landline, 
       c.mobile1   AS Mobile, 
       c.mobile2   AS Mobile, 
       c.street    AS Street, 
       c.city      AS City, 
       c.zip       AS ZipCode, 
       c.state     AS State, 
       c.country   AS Country 
    FROM   contactinfo c 
       LEFT OUTER JOIN businessinfo b 
                    ON c.bustype = b.bustype 
    WHERE  c.landline1 LIKE '%' + @search + '%' 
        OR c.landline2 LIKE '%' + @search + '%' 
   END
END
RETURN

调用 C# 代码:

protected void btSearch_Click(object sender, EventArgs e)
{
    DataSet ds = new DataSet();

    cmd = new SqlCommand("showData", con);
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.AddWithValue("@search", tbSearch.Text);
    cmd.Parameters.AddWithValue("@status", searchText);

    da = new SqlDataAdapter(cmd);
    ds.Clear();
    da.Fill(ds);  

GridViewSearch.Visible = true;
    GridViewSearch.DataSource = ds.Tables[0];
    GridViewSearch.DataBind();
}
4

1 回答 1

0

将 NULL 替换为 ' '

@Search varchar(MAX)=''
@status varchar(50)=''
于 2012-06-13T06:52:22.177 回答