Asp.net 网格视图绑定字段
Asp.net Grid View BoundField
我正在使用 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%> 但问题还是一样。
使用TemplateField
代替BoundField
<asp:TemplateField HeaderText="ID">
<ItemTemplate>
<a target='_blank' href='Details.aspx?uniId=<%#Eval("uniId")%>'><%#Eval("uniId")%></a>
</ItemTemplate>
</asp:TemplateField>
使用 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"
关于安全注意事项:您永远不应通过将主键放在 URL 中或将其作为可以通过任何浏览器的“查看页面源”选项查看的值嵌入到 griview 中来公开查看。
你至少需要...
- 处理Gridview的SelectedIndexChanged事件
- 根据行选择从gridview DataKeys中获取uniID
- 设置会话变量或类似的键值,Details.aspx
我正在使用 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%> 但问题还是一样。
使用TemplateField
代替BoundField
<asp:TemplateField HeaderText="ID">
<ItemTemplate>
<a target='_blank' href='Details.aspx?uniId=<%#Eval("uniId")%>'><%#Eval("uniId")%></a>
</ItemTemplate>
</asp:TemplateField>
使用 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"
关于安全注意事项:您永远不应通过将主键放在 URL 中或将其作为可以通过任何浏览器的“查看页面源”选项查看的值嵌入到 griview 中来公开查看。
你至少需要...
- 处理Gridview的SelectedIndexChanged事件
- 根据行选择从gridview DataKeys中获取uniID
- 设置会话变量或类似的键值,Details.aspx