如何在没有数据字段的gridview中制作超链接?

时间:2017-12-08 19:02:32

标签: c# asp.net gridview webforms .net-4.5

开发:c#asp.net web forms 4.5

我查看过很多帖子,所有帖子都有一个超链接,其中包含数据字段,datatextfield()或类似的..或者来自后端的eval。 我没有做到这一点,所以我尝试尽我所能,但它没有工作。 CommandField,HyperLinkeField,HyperLink,......都没有用。

重点是数据很好,但我似乎无法使其超链接。这样就不可能有超链接吗?

我试图在gridview上创建一个超链接。 问题是我试图制作超链接的专栏 没有从数据字段中获取数据。

它通过gridview的onRowDataBound方法得到它 像这样......

let typeName = String(describing: type(of:value))

在代码背景上,它就像这样..

<asp:GridView runat="server" ID="someGrid" CellPadding="10" 
    DataKeyNames="idx" AutoGenerateColumns="false"
    selectMethod="someGrid_GetData" ItemType="someTable"
    updateMethod="someGrid_UpdateItem" AutoGenerateEditButton="true"
    deleteMethod="someGrid_DeleteItem" AutoGenerateDeleteButton="true"
    onRowDataBound="someGrid_RowDataBound">
    <Columns>
        <asp:BoundField DataField="thing1" HeaderText="thing1" />
        <asp:BoundField DataField="thing2" HeaderText="thing2"/>
        <asp:DynamicField DataField="poDate" DataFormatString="{0:d}" />
        <asp:BoundField HeaderText="vendor" />
        <asp:CommandField HeaderText="sku" ShowSelectButton="true" SelectText="{0}" ButtonType="Link"/>
    </Columns>
</asp:GridView>

谢谢!

编辑: 也许我不清楚这里面临的挑战是什么...... 通常,这些示例在gridview中使用dataTextField属性 我无法使用dataTextField属性,因为我绑定了数据 取决于之后呈现的模型。 我这样做是因为我想将itemType设置为someTable 所以我可以使用asp.net的updatemethod和deleteMethod。

1 个答案:

答案 0 :(得分:1)

只需使用像这样的TemplateField,您可以在模板字段中执行任何操作,组合来自多个列的数据,创建控件,等等:

<Columns>    
<asp:TemplateField HeaderText="FirstName" SortExpression="FirstName">
        <EditItemTemplate>
            <asp:TextBox ID="TextBox1" runat="server"
                Text='<%# Bind("FirstName") %>'></asp:TextBox>
        </EditItemTemplate>
        <ItemTemplate>
            <asp:Label ID="Label1" runat="server"
                Text='<%# Bind("FirstName") %>'></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>
</Columns>

https://docs.microsoft.com/en-us/aspnet/web-forms/overview/data-access/custom-formatting/using-templatefields-in-the-gridview-control-cs