使用Repeater的ASP.net SQL查询问题
这是我在存储过程中的查询。我正在使用中继器显示信息。问题是如果我搜索lets say Ename=Jim ELocation=Smith中心 埃西蒂=亚特兰大 通过查询生成器,我得到两个匹配的结果。但是,当我将数据源绑定到中继器并添加参数,然后尝试运行查询时,我的中继器是空的。变量是从文本框控件传入的。另外,如果我只传入一个变量,比如title,它就可以正常工作。但是当我试图传递两个或更多的变量时,我什么也得不到。有人知道该怎么做吗使用Repeater的ASP.net SQL查询问题,asp.net,sql,sql-server-2005,repeater,Asp.net,Sql,Sql Server 2005,Repeater,这是我在存储过程中的查询。我正在使用中继器显示信息。问题是如果我搜索lets say Ename=Jim ELocation=Smith中心 埃西蒂=亚特兰大 通过查询生成器,我得到两个匹配的结果。但是,当我将数据源绑定到中继器并添加参数,然后尝试运行查询时,我的中继器是空的。变量是从文本框控件传入的。另外,如果我只传入一个变量,比如title,它就可以正常工作。但是当我试图传递两个或更多的变量时,我什么也得不到。有人知道该怎么做吗 @title varchar(150), @v
@title varchar(150),
@venue varchar(150),
@city varchar(100),
@state varchar(50),
@country varchar(100),
@desc varchar(150),
@date smalldatetime = null
AS
SELECT EID, EName, EDate, EDEnd, ELocation, ECity, EState, EDesc, EWebsite
FROM esc
WHERE (@title IS NULL OR EName LIKE '%' + @title + '%')
AND (@venue IS NULL OR ELocation LIKE '%' + @venue + '%')
AND (@city IS NULL OR ECity LIKE '%' + @city + '%')
AND (@state IS NULL OR EState LIKE '%' + @state + '%')
AND (@country IS NULL OR ECountry = @country)
AND (@desc IS NULL OR EDesc LIKE '%' + @desc + '%')
AND (@date IS NULL OR EDate = @date)
单击按钮时压缩的代码:
SqlConnection conn = null;
try
{
conn = new SqlConnection("");
SqlCommand command = new SqlCommand();
command.Connection = conn;
command.CommandText = "seesc";
command.CommandType = CommandType.StoredProcedure;
SqlParameter title = new SqlParameter();
title.ParameterName = "@title";
title.SqlDbType = SqlDbType.VarChar;
title.Direction = ParameterDirection.Input;
title.Value = TitleTextBox.Text;
//other parameters declared here
command.Parameters.Add(title);
//other parameters added here
conn.Open();
SqlDataReader reader = command.ExecuteReader();
if (reader.HasRows)
{
evrep.DataSource = reader;
evrep.DataBind();
}
}
catch { }
查询本身有一些输入错误
AND (@city IS NULL OR ECity LIKE '+' + @city + '%')
AND (@state IS NULL OR EState LIKE '+' + @state + '%')
应该是
AND (@city IS NULL OR ECity LIKE '%' + @city + '%')
AND (@state IS NULL OR EState LIKE '%' + @state + '%')
另外什么时候
title.Value = TitleTextBox.Text;
使用时,参数将不为null,但其值为空字符串。这将不符合条件
AND (@country IS NULL OR ECountry = @country)
查询本身有一些输入错误
AND (@city IS NULL OR ECity LIKE '+' + @city + '%')
AND (@state IS NULL OR EState LIKE '+' + @state + '%')
应该是
AND (@city IS NULL OR ECity LIKE '%' + @city + '%')
AND (@state IS NULL OR EState LIKE '%' + @state + '%')
另外什么时候
title.Value = TitleTextBox.Text;
使用时,参数将不为null,但其值为空字符串。这将不符合条件
AND (@country IS NULL OR ECountry = @country)
一些显示如何填充中继器的代码会很有用。你是在Page_Load中完成的,而不是在iPostBack中包装它,然后在按钮单击事件中更改参数吗?例如@Dave_Stott数据绑定似乎不是我上面提到的问题。我可以传入一个变量,我的中继器工作正常。一些显示如何填充中继器的代码会很有用。你是在Page_Load中完成的,而不是在iPostBack中包装它,然后在按钮单击事件中更改参数吗?例如@Dave_Stott数据绑定似乎不是我上面提到的问题。我可以传入一个变量,我的中继器工作正常。前两个只是打字错误,我无法复制和粘贴,所以我不得不手动重新编写代码,肯定是不小心将+而不是%。不管是空的,它仍然无法工作,即使我删除了是空的,也是可以的。传递的值可能不正确。您是否可以更新SP,使标题、场馆和城市保持在where状态,并从客户处传递所有三个?测试应该会得到正确的结果。如果是这样,查询的其余部分也应该这样做。如果这不起作用,请运行SQL profiler并查看到底是什么查询被发送到DB。前两个只是打字错误,我无法复制和粘贴,因此我不得不再次手动编写代码,并且一定是不小心将+而不是%。不管是空的,它仍然无法工作,即使我删除了是空的,也是可以的。传递的值可能不正确。您是否可以更新SP,使标题、场馆和城市保持在where状态,并从客户处传递所有三个?测试应该会得到正确的结果。如果是这样,查询的其余部分也应该这样做。如果这不起作用,请运行SQL事件探查器并查看到底是什么查询被发送到数据库。