我想在gridview中为特定用户显示值。在“测试查询”中它工作正常,但没有在页面上显示值。怎么了?
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" Width="698px" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" DataKeyNames="Idoferty">
<Columns>
<asp:BoundField DataField="Idoferty" HeaderText="Idoferty" SortExpression="Idoferty" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ofety_stopowiczeV1ConnectionString %>" SelectCommand="SELECT [Idoferty] FROM [rezerwacje] WHERE ([user] = @user)">
<SelectParameters>
<asp:SessionParameter Name="user" SessionField="User.Identity.Name" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
SELECT语句
SELECT [Idoferty] FROM [rezerwacje] WHERE ([user] = @user)
答案 0 :(得分:1)
此处的问题不是您的查询失败或GridView
行为不当,原因是User.Identity.Name
不是Session
对象的属性。
User.Identity.Name
是HttpContext
类的属性,通常从HttpContext.Current
检索,当前正在执行的HTTP请求上下文。
如果要使用Session
对象中的此属性,则必须明确设置它,例如:
protected void Page_Init(object sender, EventArgs e)
{
Session["UserName"] = HttpContext.Current.User.Identity.Name;
}
然后在你的标记中:
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ofety_stopowiczeV1ConnectionString %>" SelectCommand="SELECT [Idoferty] FROM [rezerwacje] WHERE ([user] = @user)">
<SelectParameters>
<asp:SessionParameter Name="user" SessionField="UserName" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
或者,也可以直接在控件上设置一个带默认值的基本参数,如下所示:
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ofety_stopowiczeV1ConnectionString %>" SelectCommand="SELECT [Idoferty] FROM [rezerwacje] WHERE ([user] = @user)">
<SelectParameters>
<asp:Parameter Name="UserName" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
然后在代码隐藏中:
protected void Page_Init(object sender, EventArgs e)
{
SqlDataSource1.SelectParameters["UserName"].DefaultValue = HttpContext.Current.User.Identity.Name;
}
注意:HttpContext.Current.User
或User
对ASP.Net Page
对象有效,因为User
类上的Page
对象是快捷方式至HttpContext.Current.User
,根据文档:
此属性使用HttpContext对象的User属性来确定 请求来自何处。
http://msdn.microsoft.com/en-us/library/system.web.ui.page.user.aspx
HttpContext
的文档:http://msdn.microsoft.com/en-us/library/System.Web.HttpContext(v=vs.110).aspx