使用 VB 函数作为 SqlDataSource SelectParameter 值

Using a VB Function as a SqlDataSource SelectParameter value

在我后面的代码中,我有一个函数 getEmail() returns 一个电子邮件地址,在前端我有一个 sql 数据源选择命令,它根据电子邮件地址获取信息。到目前为止,电子邮件地址是硬编码的,我想知道如何将 getEmail() 放入 selectcommand。

VB

    Public Function getEmail() As String
     Dim x As PublicProfile
     x= UserProfileContext.Current.UserInfo
    Return x.LoginName.ToString()
   End Function

前端

   <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ApplicationServices %>" SelectCommand="select Count(ID)nums from revs where Email='jon@usa.com' and Source='PUB' and Status='a'"></asp:SqlDataSource>

我尝试用 <% =getEmail() %> 代替电子邮件,但没有成功

 <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ApplicationServices %>" SelectCommand="select Count(ID)nums from revs where Email='<% =getEmail() %>' and Source='PUB' and Status='a'"></asp:SqlDataSource>

要参数化您的查询,请按如下方式修改您的 SqlDataSource 标记以添加“@Email”SelectParameter:

 <asp:SqlDataSource> 
      ID="SqlDataSource1" 
   runat="server" 
   ConnectionString="<%$ ConnectionStrings:ApplicationServices %>"
   SelectCommand="select Count(ID)nums from revs where Email=@EMail and  
                  Source='PUB' and Status='a'">
</asp:SqlDataSource>

在您的 codebehind/Page_Load() 中,尝试添加以下内容(在您的绑定之前)以将一个值放入标记中定义的 SelectParameter 中,该标记(反过来)由您的函数提供:

SqlDataSource1.SelectParameters("Email").DefaultValue = getEmail()