asp.net - 如何使用 2 个 gridview 单元格值列来构建超链接
问题描述
我有一个网格视图。我需要在一列中建立一个超链接,其中包含来自不同列的值及其自身的值。因此,例如 URL 将是 something.com/column1value/column2value。
我通过相应列中的 TemplateField 超链接了 System 和 theregion。在第 2 列中,我想根据 column1 中的值构建 url
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SQL" Class='table table-hover' BorderStyle="None" BorderColor="White" GridLines="None" UseAccessibleHeader="False" ShowFooter="True" ShowHeaderWhenEmpty="True" EnableTheming="False">
<Columns>
<asp:BoundField DataField="Type" HeaderText="Type" SortExpression="Type" />
<asp:TemplateField HeaderText="System" SortExpression="System">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("System") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("System", "http://evemaps.dotlan.net/system/{0}/") %>' Target="_blank" Text='<%# Eval("System", "{0}") %>'></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Region" SortExpression="Region">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Region") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("Region", "http://evemaps.dotlan.net/Map/{0}/") %>' Target="_blank" Text='<%# Eval("Region", "{0}") %>'></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Location" HeaderText="Location" SortExpression="Location" />
<asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
<asp:BoundField DataField="Owner" HeaderText="Owner" SortExpression="Owner" />
<asp:BoundField DataField="Notes" HeaderText="Notes" SortExpression="Notes" />
<asp:TemplateField HeaderText="EvE Time" SortExpression="EvE Time">
<EditItemTemplate>
<asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("[EvE Time]") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="EvETimeLB" runat="server" Text='<%# Bind("[EvE Time]") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<HeaderStyle Font-Bold="True" />
</asp:GridView>
解决方案
使用Eval
不限于您正在使用它的列。您可以使用 ItemTemplate 中的所有列。
<asp:HyperLink ID="HyperLink1" runat="server" Target="_blank"
NavigateUrl='<%# string.Format("something.com/{0}/{1}", Eval("column1"), Eval("column2")) %>'
Text='<%# string.Format("something.com/{0}/{1}", Eval("column1"), Eval("column2")) %>'>
</asp:HyperLink>
推荐阅读
- apache - 尝试访问我的网站时收到禁止消息
- c - 在 C 中实现 shell - 流水线输入具有正确的输出但退出循环
- java - Hibernate 不会自动创建表
- mediawiki - 如何从 MediaWiki 的所有类别页面中删除类别?
- redux - Redux 存储在 reducer 名称下具有多个“版本”状态
- c# - Visual Studio for xamarin for ios 项目的预览选项
- java - 两个 JFrame:当 JFrame 2 关闭时,如何刷新 JFrame 1?
- git - 尽管文件存在,但Git找不到该文件
- java - 是否使对象引用为空,释放该对象占用的内存
- constraints - Mariadb 在当前表上使用子查询检查约束