Asp.net 网格视图边界字段

本文关键字:边界 字段 视图 网格 net Asp | 更新日期: 2023-09-27 18:36:20

我正在使用 Asp.net 网格视图绑定字段,在绑定字段中,我正在使用锚标记在新选项卡中打开值。我的锚标签工作正常,因为它从数据库中获取值,但问题是我想显示从数据库到锚标签的值,比如我的数据库值这是我的代码

<asp:BoundField DataField="uniId" ControlStyle-CssClass="bg-darkGreen"  HeaderText="ID"     ReadOnly="True" SortExpression="uniId" HtmlEncode="false" DataFormatString="<a target='_blank'     href='Details.aspx?uniId={0}'>uniId</a>" >
</asp:BoundField>

它在所有行中显示 uniId 而不是它们的值。

我也尝试过<%=uniId%>但问题仍然存在。

Asp.net 网格视图边界字段

使用 TemplateField 而不是 BoundField

<asp:TemplateField  HeaderText="ID">
    <ItemTemplate>
        <a target='_blank' href='Details.aspx?uniId=<%#Eval("uniId")%>'><%#Eval("uniId")%></a>
    </ItemTemplate>
</asp:TemplateField>

在安全说明上:切勿通过将主键放在 URL 中或作为任何浏览器的"查看页面源"选项可以查看的值嵌入到 griview 中来公开查看主键。

您至少需要...

  1. 处理网格视图的选定索引已更改事件
  2. 根据
  3. 行选择从网格视图数据密钥获取 uniID
  4. 使用详细信息将使用的键值设置会话变量或类似变量.aspx

> 使用TemplateField而不是BoundField

        <asp:TemplateField ItemStyle-HorizontalAlign="Center">
            <ItemTemplate>
                <HyperLink ID="RedirectBtn" runat="server"
                    OnClick="RedirectBtn_Click" />
            </ItemTemplate>
            <ItemStyle HorizontalAlign="Center"></ItemStyle>
        </asp:TemplateField>

之后OnRowDataBound您可以在网格事件中添加任何您想要的内容。如果调用 RowDataBound 事件Grid_RowDataBound

    protected void Grid_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.DataItem == null)
            return;
        DataRowView row = e.Row.DataItem as DataRowView;
        HyperLinkbtn = e.Row.FindControl("RedirectBtn") as HyperLink;
        b.NavigateUrl = "some text" + row["ColumnName"] + "other text";
        //if you want to open new tab
        b.Target="_blank";
    }

您将事件添加到网格中,如下所示:

OnRowDataBound="Grid_RowDataBound"