我使用的是Visual Studio 2010专业版和SQL Server 2008 R2快递
我要做的是检测谁是登录用户并在gridview中显示他们的详细信息。登录用户使用了asp.net身份验证,我允许用户使用登录过程访问该页面,他们将“用户”角色设置为允许。管理员帐户可以从gridview查看帐户中的所有用户,但我还希望登录用户在成员部分中查看自己的详细信息。
这显示在代码隐藏
中Protected Sub Page_Load(sender As Object, e As System.EventArgs)
Session("MemberDetails") = User.Identity.Name
End Sub
这是在主页
中<asp:Gridview>
<Columns>
<asp:BoundField DataField="username" HeaderText="username" />
<$ many more fields here--$>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT username, salutation, fname, sname, address, suburb, postcode, dayphone FROM member WHERE (username = @username)">
<SelectParameters>
<asp:SessionParameter Name="username" SessionField="MemberDetails" />
</SelectParameters>
</asp:SqlDataSource>
所有这些都应该有用,但我会得到一个空白页。
答案 0 :(得分:1)
您的GridView标记不完整,尤其是DataSourceID="SqlDataSource1"
<asp:Gridview runat="server" ID="gvUsers" DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="username" HeaderText="username" />
<$ many more fields here--$>
</Columns>
</asp:GridView>
答案 1 :(得分:0)
这个vb代码隐藏修复了我的问题:
Protected Sub SqlDataSource1_Selecting(ByVal sender As Object, ByVal e As SqlDataSourceSelectingEventArgs) Handles SqlDataSource1.Selecting
e.Command.Parameters(0).Value = Me.User.Identity.Name
End Sub