【问题标题】:How to add Session value to DropDownList using SqlDataSource in ASP.Net?如何在 ASP.Net 中使用 SqlDataSource 将会话值添加到 DropDownList?
【发布时间】:2017-08-26 15:14:27
【问题描述】:

我有一个 DropDownList,它与 SqlDataSource 连接,我在该 DropDownList 中传递了两个值

1.ReportName = 默认值TotalSales

2.UserID = 是会话值Session["UserID"]

这是我的代码

Aspx.code

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:HQWebMatajer13 %>" SelectCommand="SELECT [UserFileName] FROM [ReportSave] WHERE (([ReportName] = @ReportName) AND ([UserID] = @UserID))">
    <SelectParameters>
        <asp:Parameter DefaultValue="TotalSales" Name="ReportName" Type="String" />
        <asp:SessionParameter Name="UserID" SessionField="UserID" Type="String" />
    </SelectParameters>
</asp:SqlDataSource>

这里是

我已经在我之前的页面 UserReports.aspx

中传递了会话中的值

那个页面代码:

protected void linkTotalSales_Click(object sender, EventArgs e)
{
    Session["UserID"] = Session["UserID"].ToString();
    Response.Redirect("ReportTotalSalesPivot.aspx");
}

当我从 UserReports.aspx 页面单击TotalSales 的链接时。 它显示以下错误

DataBinding: 'System.Data.DataRowView' does not contain a property with the name 'UserID'.

【问题讨论】:

    标签: c# asp.net session session-cookies


    【解决方案1】:

    显示错误是因为在您的数据源中您没有选择 UserId 和 ReportName。您只是在 WHERE 子句中将它们用作条件。

    我不明白你为什么这样做

     Session["UserId"] = Session["UserId"].ToString();
    

    因为您的会话中已经有一个字符串变量。还有一点需要注意的是 Session 在整个 Web 应用程序中都是动态的。

    【讨论】:

    • 如果可能的话,让你的问题更加详尽,这样我就可以找到错误的原因。我认为您只在 Query 中犯了错误。
    • 正如您所说,会话值将在整个应用程序中传递。这是正确的,我接受那个。但这并不是在我的情况下发生的错误。我找到了解决方案。我的 Aspx 代码中的下拉错误
    猜你喜欢
    • 1970-01-01
    • 2016-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-22
    • 1970-01-01
    相关资源
    最近更新 更多