我使用Asp.net网格视图绑定字段,在绑定字段中使用锚标记在新选项卡中打开值。我的锚标记工作得很好,因为它从数据库获取值,但问题是,我想从数据库显示值到锚标记,比如我的db值,这是我的代码。
<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%>,但问题依然存在。
发布于 2015-01-06 13:53:19
使用TemplateField而不是BoundField
<asp:TemplateField HeaderText="ID">
<ItemTemplate>
<a target='_blank' href='Details.aspx?uniId=<%#Eval("uniId")%>'><%#Eval("uniId")%></a>
</ItemTemplate>
</asp:TemplateField>发布于 2015-01-06 18:11:06
请注意:您不应该通过将主键放置在URL中或嵌入到网格视图中,将其作为任何浏览器的选项查看的值,从而使主键可公开查看。
你至少要..。
发布于 2015-01-06 13:53:29
使用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"https://stackoverflow.com/questions/27800017
复制相似问题