You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用GridView两列单元格值构建超链接

解决方案:在GridView列中结合多字段构建超链接

要实现你需要的“基于第一列(Type)的值构建第二列(System)的超链接”需求,只需要修改System列的HyperLink控件的NavigateUrl绑定表达式,同时引用两个字段的值进行拼接即可。

修改后的System列核心代码

原来的System列只单独使用了System字段,现在我们通过string.Format同时传入Type和System两个字段的值来生成目标URL:

<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='<%# string.Format("http://something.com/{0}/{1}", Eval("Type"), Eval("System")) %>' 
            Target="_blank" 
            Text='<%# Eval("System", "{0}") %>'>
        </asp:HyperLink>
    </ItemTemplate>
</asp:TemplateField>

完整的GridView代码

下面是修改后的完整GridView代码,其他列的功能保持不变:

<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='<%# string.Format("http://something.com/{0}/{1}", Eval("Type"), Eval("System")) %>' 
                    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>

关键说明

  • 使用string.Format可以灵活组合多个数据源字段的值,{0}对应第一个参数Eval("Type"),{1}对应第二个参数Eval("System")
  • 确保Eval中的字段名和数据源返回的字段名完全一致(比如这里的Type和System)
  • 如果需要调整URL格式,直接修改string.Format的模板字符串即可,适配不同的域名或路径结构

内容的提问来源于stack exchange,提问作者kendarr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:59:05