C# 在gridview中为mailto:link使用多个字段

C# 在gridview中为mailto:link使用多个字段,c#,asp.net,email,url,gridview,C#,Asp.net,Email,Url,Gridview,我正在尝试构建一个gridview字段,该字段显示一个名称和指向带有主题的电子邮件地址的链接。我第一次尝试使用DataNavigateEurlFormatString来实现这一点,但显然在DataNavigateEurlFormatString中使用:会破坏链接,所以很不幸,下面的代码给我留下了一个空链接 string[] UrlFields = { "bidd_name", "Email", "bidd_number", "bidd_desc", "Bidds_id" }; LinkField

我正在尝试构建一个gridview字段,该字段显示一个名称和指向带有主题的电子邮件地址的链接。我第一次尝试使用DataNavigateEurlFormatString来实现这一点,但显然在DataNavigateEurlFormatString中使用:会破坏链接,所以很不幸,下面的代码给我留下了一个空链接

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()等数据绑定方法只能在数据绑定控件的上下文中使用。”

我对这个错误做了一些研究,发现我可能必须使用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);
使用空值会生成一个“对象引用未设置为对象的实例”错误,我不知道发送方或e应该是什么值


如果有人能帮我生成这些电子邮件链接,我将不胜感激。我在C#方面的经验很少,一般来说也没有做过那么多的编码,所以请把我当作孩子看待。

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


谢谢!这为我指明了正确的方向。我可以通过在aspx页面上添加模板字段,然后在代码隐藏页面中重新排列列的顺序来解决我的问题,以确保表看起来仍然相同。
grddata_RowDataBound(null, null);