如果在ASP页面中创建了下拉列表和数据集(基于存储过程),则使用基于会话的参数。
当会话变量设置为在proc中返回结果并且调用databind()
的值时,列表是否应填充?
或者还有其他事可做吗?我正在尝试像dataset.select()
这样的事情,但想知道这是怎么回事。
这一切都在页面加载中。如果我错过了一些明显的东西,请查看代码。
注意:我在ASPx页面而不是在代码隐藏中创建数据源的原因是因为我将创建很多这些数据源并且它更快,但也许这不是一个好方法。
ASP是
<asp:DropDownList ID="ddClinic" runat="server"OnSelectedIndexChanged="
ddClinic_SelectedIndexChanged" AppendDataBoundItems="True" DataSourceID="dsClinics"
DataTextField="ClinicName" DataValueField="ClinicID" AutoPostBack="True">
<asp:ListItem Value="0">Select One</asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="dsClinics" runat="server" ConnectionString="
<$ConnectionStrings:coPC3PaymentConnectionString %>" SelectCommand="GetClinicsForUser"
SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:SessionParameter DbType="Int32" Name="userID" SessionField="Userid"
Type="Int32" />
<asp:ControlParameter ControlID="LbMsg.Text" DbType="String" Direction="Output"
Name="ErrorMsg" PropertyName="Text" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
那么,在Codebehind C#中不应该这样填充吗? (假设参数在SP中返回数据?
Session["User"] = PC3User;
Session["MultiClinics"] = 1;
ddClinic.DataBind();
再次,抱歉愚蠢的问题,但我发现的所有示例都是在代码隐藏中创建的数据源。这需要吗?
答案 0 :(得分:0)
我不认为问题可以从这个板上删除,但我不认为这个会帮助其他人因为我发现我的问题很简单并且与dataabind无关 - 我只是引用会话变量用错误的名字
Session["User"] vs <asp:SessionParameter DbType="Int32" Name="user**ID**"
如果你浪费时间,我道歉,我会更加小心。这已经发生过几次了。我将检查所有字符串值,因为它们不会在构建中被捕获。