如何使用2个gridview单元格值列来构建超链接

时间:2019-01-09 14:39:10

标签: asp.net vb.net gridview

我有一个gridview。我需要在一个列中建立一个超链接,其中包含来自另一列的值及其自身的值。因此,例如,URL将是something.com/column1value/column2value。

在相应的列中,我通过“模板字段”使“系统”和“区域”超链接。我要在第2列中根据第1列中的值构建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>

1 个答案:

答案 0 :(得分:1)

使用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>