我的应用程序中有一个下拉列表,应该填充基于会话变量的值。
<asp:SqlDataSource
id="SqlDataSource3"
runat="server"
ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT ID_SHOP
FROM SHOP
WHERE ID_SHOP_CITY = ?">
<SelectParameters>
<asp:SessionParameter
Name="selectedCityId"
SessionField="selectedCityId"
DefaultValue="5" />
</SelectParameters>
</asp:SqlDataSource>
基于这个例子: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.sessionparameter.aspx
我收到语法错误 - 字符无效。
如果我更改了我的代码:
<asp:SqlDataSource
id="SqlDataSource3"
runat="server"
ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT ID_SHOP
FROM SHOP
WHERE ID_SHOP_CITY = 1">
<SelectParameters>
<asp:SessionParameter
Name="selectedCityId"
SessionField="selectedCityId"
DefaultValue="5" />
</SelectParameters>
</asp:SqlDataSource>
它有效。但是我不需要那个where子句,我需要使用session变量。我该如何解决?
答案 0 :(得分:2)
您指向的示例是使用 Odbc Provider ,它使用?
作为参数。但是您使用的是 SqlClient提供程序,它需要@ParamName
作为参数。您可以在此处查看差异:Using Parameters with the SqlDataSource Control。
您必须将标记更改为:
<asp:SqlDataSource
id="SqlDataSource3"
runat="server"
ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT ID_SHOP
FROM SHOP
WHERE ID_SHOP_CITY = @selectedCityId">
<SelectParameters>
<asp:SessionParameter
Name="selectedCityId"
SessionField="selectedCityId"
DefaultValue="5" />
</SelectParameters>
</asp:SqlDataSource>