如何为GridView的BoundField/TemplateField列添加跳转超链接?
实现GridView Number列添加超链接的方法
你可以通过以下两种常用方式替换原有的TextBox,为Number列添加可跳转的超链接:
方法一:使用ASP.NET HyperLink控件
直接将TemplateField中的TextBox替换为HyperLink控件,绑定链接地址和显示文本:
<Columns> <asp:BoundField DataField="type" HeaderText="Type" ReadOnly="true" SortExpression="type" /> <asp:TemplateField HeaderText="Number" SortExpression="number"> <ItemTemplate> <asp:HyperLink ID="hlNumber" runat="server" <!-- 替换为你的目标链接,将number作为参数传递 --> NavigateUrl='<%# $"https://目标地址?number={Eval("number")}" %>' Text='<%# Eval("number") %>' <!-- 可选:设置新窗口打开链接 --> Target="_blank" <!-- 可选:模仿原TextBox的样式 --> Font-Names="Arial" Font-Size="10pt" BackColor="Transparent"> </asp:HyperLink> </ItemTemplate> </asp:TemplateField> </Columns>
如果需要根据Type字段动态生成不同的跳转链接,可以配合后台方法实现:
前端代码
<asp:TemplateField HeaderText="Number" SortExpression="number"> <ItemTemplate> <asp:HyperLink ID="hlNumber" runat="server" NavigateUrl='<%# GetTargetUrl(Eval("type"), Eval("number")) %>' Text='<%# Eval("number") %>' Target="_blank"> </asp:HyperLink> </ItemTemplate> </asp:TemplateField>
后台C#代码(添加到页面的.cs文件中)
protected string GetTargetUrl(object type, object number) { string typeValue = type.ToString(); string numberValue = number.ToString(); // 根据Type值返回对应链接 if (typeValue == "CR") { return $"https://CR专属地址?id={numberValue}"; } else if (typeValue == "WO") { return $"https://WO专属地址?code={numberValue}"; } // 默认跳转地址,可自定义 return "#"; }
方法二:使用HTML原生a标签
如果更倾向于前端原生实现,直接用<a>标签绑定链接即可:
<Columns> <asp:BoundField DataField="type" HeaderText="Type" ReadOnly="true" SortExpression="type" /> <asp:TemplateField HeaderText="Number" SortExpression="number"> <ItemTemplate> <a href='<%# $"https://目标地址?number={Eval("number")}" %>' target="_blank" style="font-family:Arial; font-size:10pt; background:transparent;"> <%# Eval("number") %> </a> </ItemTemplate> </asp:TemplateField> </Columns>
注意事项
- 替换代码中的
https://目标地址为实际需要跳转的网站地址 Target="_blank"参数可选,用于控制是否在新窗口打开链接- 若要保持原TextBox的视觉效果,可通过
style属性或CSS类设置对应样式
内容的提问来源于stack exchange,提问作者Mahendra
相关产品推荐
相关产品推荐

