【问题标题】:How to take users email address from a datagrid and populate it in an email in asp.net如何从数据网格中获取用户电子邮件地址并将其填充到 asp.net 的电子邮件中
【发布时间】:2015-04-29 21:57:36
【问题描述】:

目前,一旦用户单击位于网格视图内的图像按钮,我的应用程序就能够打开带有默认收件人的 Outlook 电子邮件。这个aspx代码如下;

<asp:ImageButton ID="LinkEmail" OnClick="openClient" CommandArgument='<%# Eval("customerId") %>'
                                            ToolTip="Send a Email to this customer" ImageUrl="~/SiteElements/Images/email_icon.jpg" 
                                            Width="16px" Height="16px" runat="server" />

我有一个 ID 为“custEmail”的绑定字段数据字段,如果一个客户链接到他们的帐户,它会在数据网格中显示一封客户电子邮件。用于打开 Outlook 应用程序的代码取自 this question,我添加的唯一补充是电子邮件发送到的地址;

Protected Sub openClient(ByVal sender As System.Object, ByVal e As System.EventArgs)
    Dim Out1 As Object
    Out1 = CreateObject("Outlook.Application")
    If Out1 IsNot Nothing Then
        Dim omsg As Object
        omsg = Out1.CreateItem(0) '=Outlook.OlItemType.olMailItem'
        omsg.To = "sample.email@test.com"
        'set message properties here...'
        omsg.Display(True)

    End If

我想做的是将示例电子邮件替换为在数据网格中为客户显示的电子邮件。当我尝试这样做时;

omsg.To = custEmail

后面的代码没有找到这个Bound Field Data Field。

如何让我的代码隐藏查看“custEmail”BoundField,以便我可以使用客户电子邮件地址流行“omsg.To”?

【问题讨论】:

  • 已编辑问题以澄清。
  • openClient 是什么事件?一个按钮?哪个与datagrid中的每个数据相关联??

标签: asp.net vb.net email gridview


【解决方案1】:

我建议您在 ImageButton 中将客户电子邮件地址传递为 CommandArgument 并添加另一个属性 CommandName

<asp:ImageButton ID="LinkEmail" OnClick="openClient" 
       CommandName="SendEmail"
       CommandArgument='<%# Eval("CustomerEmail") %>' 
       ToolTip="Send a Email to this customer" 
       ImageUrl="~/SiteElements/Images/email_icon.jpg" 
       Width="16px" Height="16px" runat="server" />

接下来在GridView中添加OnRowCommand事件:

<asp:GridView ID="GridView1" runat="server" 
        OnRowCommand="GridView1_RowCommand">
    </asp:GridView>

在您的代码隐藏中:

Protected Sub GridView1_RowCommand(sender As Object, e As GridViewCommandEventArgs)

    If e.CommandName = "SendEmail" Then
        Dim CustomerEmailAddress = e.CommandArgument

        Dim Out1 As Object
        Out1 = CreateObject("Outlook.Application")
        If Out1 IsNot Nothing Then
            Dim omsg As Object
            omsg = Out1.CreateItem(0) '=Outlook.OlItemType.olMailItem'
            omsg.To = CustomerEmailAddress
            'set message properties here...'
            omsg.Display(True)

        End If
    End If

End Sub

【讨论】:

  • 您好。我已按照建议完成,但收到以下错误; “BC30456:‘openClient’不是‘ASP.customerupdate_aspx’的成员。”。有什么想法吗?
  • 刚刚完成。它正在工作,但正在“收件人”部分中显示数据库“customerID”中的第一个字段。我需要它显示的字段是“custEmail”。
  • 在 ImageButton 中更新 CommandArgument='&lt;%# Eval("custEmail") %&gt;' 然后尝试。
  • 是的,成功了。非常感谢您的帮助:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-09
  • 2012-02-09
相关资源
最近更新 更多