【发布时间】:2011-04-19 17:42:14
【问题描述】:
这是我在存储过程中的查询。我正在使用中继器来显示信息。问题是如果我搜索让我们说
Ename = Jim
ELocation = 史密斯中心
ECity = 亚特兰大
通过查询生成器,我得到了两个匹配的结果。但是当我将我的数据源绑定到转发器并添加参数时,然后尝试运行查询,我的转发器是空的。变量从文本框控件传入。此外,如果我只传入一个变量,比如标题,它就可以正常工作。但是当我尝试传入两个或更多变量时,我什么也得不到。有没有人知道该怎么做?
@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 { }
【问题讨论】:
-
一些显示如何填充中继器的代码会很有用。您是否在 Page_Load 中执行此操作,而不是将其包装在 IsPostBack 中,然后更改按钮单击事件中的参数?
-
@Dave_Stott 数据绑定似乎不是我上面提到的问题。我可以传入一个变量,我的中继器工作正常。
标签: asp.net sql sql-server-2005 repeater