对mailto使用多个字段:gridview中的链接

时间:2017-10-04 15:18:56

标签: c# asp.net email url gridview

我正在尝试构建一个gridview字段,该字段显示名称并指向包含主题的电子邮件地址的链接。我首先尝试使用DataNavigateUrlFormatString来完成这项工作,但显然在DataNavigateUrlFormatString中使用了一个中断链接,所以不幸的是下面的代码给我留下了一个空链接。

SrcPkt

接下来我尝试使用Eval()和NavigateUrl,但下面的代码给了我这个错误“数据绑定方法,如Eval(),XPath()和Bind()只能在数据绑定控件的上下文中使用。 “

string[] UrlFields = { "bidd_name", "Email", "bidd_number", "bidd_desc", "Bidds_id" };
LinkField = new HyperLinkField();

LinkField.HeaderText = "Buyer";
LinkField.DataTextField = "buyer";
LinkField.HeaderStyle.CssClass = "GVpadding";
LinkField.ItemStyle.CssClass = "GVpadding";
LinkField.DataNavigateUrlFields = UrlFields;
LinkField.DataNavigateUrlFormatString = "mailto:{1} ?subject={2} {3}";

我对错误进行了一些研究,发现我可能不得不使用RowDataBound方法,但我不知道如何解决这个问题。在构建字段后调用下面的方法可以将URL更改为所需的值吗?

EmailLinkField.NavigateUrl = "mailto:" + (string)Eval("Email") + "?subject=" + (string)Eval("bidd_number") + " " + (string)Eval("bidd_desc");

如果是这样,我该如何调用呢?在做这样的事情时,我不确定我需要使用哪些参数。

protected void grddata_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            HyperLink hyp = (HyperLink)e.Row.FindControl("EmailLinkField");
            hyp.NavigateUrl = "mailto:" + (string)Eval("Email") + "?subject=" + (string)Eval("bidd_number") + " " + (string)Eval("bidd_desc");
        }
    }

使用空值会生成“未将对象引用设置为对象的实例”。错误,我不知道发件人或e应该是什么价值。

如果有人可以帮助我获取这些电子邮件生成链接,将不胜感激。我对C#的经验很少,并且一般都没有做过那么多编码,所以请像对待孩子一样对待我。

1 个答案:

答案 0 :(得分:1)

只需使用模板化列就可以解决您的问题

https://msdn.microsoft.com/en-us/library/bb288032.aspx