这是我在C#中的代码。
protected void Page_Load(object sender, EventArgs e)
{
Name = "Nitin";
}
我有一个GridView,其中有一个Hyperlinkfield。我想通过HyperLinkField从C#页面(后面的代码中的一个)发送Name
到下一页但它不是GridView的BoundField之一(即我从EntityDataSource得到的)。这是我的asp.net代码。
码:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="Id" DataSourceID="WorkItemsEntityDataSource">
<Columns>
<asp:hyperlinkfield datatextfield="Id"
datanavigateurlfields="Id"
datanavigateurlformatstring="~\WorkItems.aspx?Id={0}"
headertext="Id"/>
<asp:BoundField DataField="Description" HeaderText="Description" SortExpression="Description" />
<asp:BoundField DataField="TFSId" HeaderText="TFSId" SortExpression="TFSId" />
<asp:CheckBoxField DataField="IsBillable" HeaderText="IsBillable" SortExpression="IsBillable" />
</Columns>
</asp:GridView>
答案 0 :(得分:2)
您也可以从代码后面传递导航网址
在Aspx页面
<asp:TemplateField>
<ItemTemplate>
<asp:HyperLink ID="hyp" runat="server" Text="Navigation"></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
在用户网格视图后面的代码中,数据绑定事件就像这样
protected void grddata_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
int ID = Convert.Int32(DataBinder.Eval(e.Row.DataItem, "ID"));
HyperLink hyp = (HyperLink)e.Row.FindControl("hyp");
hyp.NavigateUrl = "Test.aspx?Name='" + Request.QueryString["test"] + "'&&ID"+ ID +"";
}
}
我认为这会对你有帮助......
答案 1 :(得分:0)
我不确定实际在数据绑定控件中使用它,但是你构建的url肯定不包含QueryString参数'Name'。它应该是这样的:
~\WorkItems.aspx?Id={0}&Name={1}
如果不需要Id,只需将Id替换为Name:
~\WorkItems.aspx?Name={0}
至于替换 - 我不知道你的数据对象有什么属性以及如何绑定它们。我认为你没有问题,因为绑定到Id工作(可能)。
<强>更新强>
如果Name没有从数据源返回,你应该创建一个包含Name字段的新实体,或者使用一些常量名称,就像你在页面中声明一样(不确定它是否应该在每一行中显示相同的名称) )。 第二个选项可以像这样实现:
~\WorkItems.aspx?Id={0}&Name=<%= Name %>
答案 2 :(得分:0)
您可以使用:
<asp:TemplateField HeaderText="test">
<ItemTemplate>
<asp:HyperLink runat="server" ID="temp" NavigateUrl='<%# String.Format("~\WorkItems.aspx?Id={0}&Name={1}", Eval("Name"), Name)%>' ></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
答案 3 :(得分:0)
您可以通过以下方式修改HyperLinkField
的网址:
protected void pendingAccountsGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
((HyperLink) e.Row.Cell[0].Controls[0]).NavigateUrl = "http://stackoverflow.com";
}
}
只需更改它以在e.Row.Cell[0]
中指定正确的索引。