我正在尝试在sqlDataSource WHERE语句中使用代码隐藏页面中的变量。我正在使用Membership.GetUser()。ProviderUserKey来获取登录用户的UserId,我想只显示将此UserId作为外键的记录。我怎么能为此编写SQL?
非常感谢,Carl
这是我到目前为止所做的:
SQL查询:
SelectCommand="SELECT [UserID], [CarID], [Make], [Model], [Year] FROM [Vehicle]"
代码隐藏
String user2 = ((Guid)Membership.GetUser().ProviderUserKey).ToString();
我想将WHERE UserID = user2添加到SQL查询中。
答案 0 :(得分:2)
在ASP.NET中有许多与数据库交互的方法。您还没有说明如何执行SQL,但这是一种可能的方法:
在.ASPX文件中:
<asp:SqlDataSource ID="UserSource" runat="server" ConnectionString="<%$ ConnectionStrings:SQLConn %>"
SelectCommandType="StoredProcedure" SelectCommand="dbo.NPGetUserInfo">
<SelectParameters>
<asp:Parameter Name="UserID" DefaultValue="0" />
</SelectParameters>
</asp:SqlDataSource>
在.VB代码后面的文件中(概念在C#中是相同的):
Protected Sub UserSource_Selecting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs) Handles UserSource.Selecting
e.Command.Parameters.Item("@UserID").Value = Membership.GetUser().ProviderUserKey
End Sub
祝你好运!
答案 1 :(得分:0)
我想通了,谢谢。
我创建了一个会话变量,我在其中存储了((Guid)Membership.GetUser()。ProviderUserKey),然后使用配置数据源向导中的WHERE按钮将其与UserID进行比较。
非常感谢您的回复。