我将部分名称传递给url中的aspx页面,以便过滤名称列表。但是,这个参数似乎完全被忽略了。url为FilterPage.aspx?strPartialName=abi
.Net代码为:
<ul id="employees">
<asp:Repeater ID="rptEmployees" DataSourceID="sqlGetEmployees" runat="server">
<ItemTemplate>
<li><%# Eval("Name")%></li>
</ItemTemplate>
</asp:Repeater>
<asp:SqlDataSource
id="sqlGetEmployees"
ConnectionString = "dsn=EmpDB;"
ProviderName = "System.Data.Odbc"
SelectCommand = "cdlSP_GetEmployees"
SelectCommandType = "StoredProcedure"
CancelSelectOnNullParameter="false"
runat="server">
<asp:SelectParameters>
<asp:QueryStringParameter Name="strPartialName" DbType="String" Direction="Input"
QueryStringField="strPartialName" DefaultValue="" ConvertEmptyStringToNull="True" />
</asp:SelectParameters>
</asp:SqlDataSource>
</ul>SQL存储过程是:
ALTER PROCEDURE [dbo].[cdlSP_GetEmployees] @strPartialName varchar(100) = Null
AS
BEGIN
SET NOCOUNT ON
DECLARE @sql VARCHAR(1600)
--Get all records is strPartialName is null
IF @strPartialName IS NULL
BEGIN
SELECT LN + ' ' + FN AS Name
FROM dbo.Employees
ORDER BY Name
END
ELSE
BEGIN
SELECT LN + ' ' + FN AS Name
FROM dbo.Employees
WHERE LN LIKE '%' + @strPartialName + '%' OR FN LIKE '%' + @strPartialName + '%'
ORDER BY Name
END
END我在页面中添加了一个Response.Write ("strPartialName=“& Request.QueryString("strPartialName"),它如预期的那样显示为"abi”。我还修改了存储过程,以查看是否触发了"Null“条件而不是ELSE条件(我修改了代码,只返回姓氏)。果然,返回的数据只是员工的姓氏,这意味着strPartialName将作为null而不是"adi“进行传递。我就是想不出为什么?有没有人?
发布于 2014-07-29 22:07:33
在参数中,您缺少大小。size="100"。类型是SqlDbType.VarChar (这是form.not背后的代码,确定如何将其放在标签形式中)。我假设它只是DbType="varchar")而不是字符串
https://stackoverflow.com/questions/25000665
复制相似问题