【发布时间】:2019-06-25 19:46:36
【问题描述】:
我正在尝试动态创建一个模板字段,其中包含一个由超链接字段组成的项目模板。尝试在后端 asp.net 代码中重新创建以下代码:
<asp:TemplateField HeaderText="Total" SortExpression="TotalCases" ItemStyle-HorizontalAlign ="Center" ControlStyle-ForeColor="Black">
<ItemTemplate>
<asp:HyperLink ID="TotalCases" Target="_blank" runat="server" Text='<%# Eval("TotalCases") %>' />
</ItemTemplate>
</asp:TemplateField>
我创建了一个名为 totalcases 的新模板字段,现在我正在尝试将项目模板作为超链接字段获取,这是我卡住的地方
TemplateField TotalCases = new TemplateField();
TotalCases.HeaderText = "Total";
TotalCases.SortExpression = "TotalCases";
TotalCases.ItemStyle.HorizontalAlign = HorizontalAlign.Center;
TotalCases.ControlStyle.ForeColor = System.Drawing.Color.Black;
TotalCases.ItemTemplate = new HyperLink(); //THIS DOESNT WORK
clientgv.Columns.Add(TotalCases);
错误:无法将 System.Web.UI.WebControls.Hyperlink 类型转换为 System.Web.UI.Template。存在显式转换。
我正在尝试获取在 rowdatabound 方法中分配的超链接 URL,但它找不到超链接并且在调试时返回为 null
HyperLink hltc = (HyperLink)e.Row.FindControl("TotalCases");
【问题讨论】:
-
如何把超链接字段放到item模板里面?
-
您为什么要这样做?隐藏现有列然后以编程方式添加一个列会容易得多。
-
我需要动态完成它,因为它循环通过 sql 代码并根据输出中的行数生成 gridview。我不想要这个硬编码我希望它在后端代码中动态完成。这是我的要求。一旦我弄清楚如何在后端动态创建它,现有的列就会被删除
-
class HyperlinkColumn : ITemplate{ public void InstantiateIn(System.Web.UI.Control container) { HyperLink hypLink = new yperLink(); container.Controls.Add(link); }}试试这个链接stackoverflow.com/questions/13288215/… -
别以为我明白了。在示例中,他们添加了“链接”,什么是链接?它没有在任何地方定义