【问题标题】:Use multiple fields for mailto: link in gridview对 mailto 使用多个字段:gridview 中的链接
【发布时间】:2017-10-04 15:18:56
【问题描述】:

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

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}";

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

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

我对该错误进行了一些研究,发现我可能必须使用 RowDataBound 方法,但我不知道该怎么做。构建字段后调用下面的方法是否可以将 URL 更改为所需的值?

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");
        }
    }

如果是这样,我该如何调用它?我不确定在执行此类操作时需要使用哪些参数。

grddata_RowDataBound(null, null);

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

如果有人可以帮助我生成这些电子邮件链接,我们将不胜感激。我对 C# 的经验很少,而且总体上也没有做过那么多的编码,所以请把我当作孩子一样对待。

【问题讨论】:

    标签: c# asp.net email url gridview


    【解决方案1】:

    只需使用模板列即可解决您的问题

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

    【讨论】:

    • 谢谢!这为我指明了正确的方向。我能够通过在 aspx 页面上添加模板字段,然后重新排列代码隐藏页面中的列的顺序来解决我的问题,以确保表格看起来仍然相同。
    猜你喜欢
    • 2019-02-05
    • 2012-05-08
    • 2012-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多