【发布时间】: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