我有一个ASP.NET应用程序。这个应用程序有一个GridView。这个GridView有一个需要包含超链接的TemplateField。我希望这些超链接以
add.aspx?id1=[QueryStringParameterValue]&id2=[ControlParameterValue]&id3=[CurrentRecordID]有办法这样做吗?如果没有,那么将用户重定向到另一个页面并加以考虑的最佳方式是什么:
当前查询字符串中的值(下拉列表中选定项的QueryStringParameterValue)
))
目前,我的GridView看起来如下:
<asp:DropDownList ID="myDropDownList" Runat="Server" DataSourceID="myDataSource" DataTextField="Name" DataValueField="ID" />
<GridView ID="myGridView" runat="Server">
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID" />
<asp:BoundField DataField="Name" HeaderText="Name" />
<asp:TemplateField HeaderText="Action">
<ItemTemplate>
<a href="#">View Details</a>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>但现在我被困住了。如何将我想要包含在我的ItemTemplate中的三个项目连接起来?
谢谢!
发布于 2011-12-20 21:23:46
ASPX
<a href='<%# CreateUrl(Eval("id")) %>'>View details </a>C#
public string CreateUrl(obj value)
{
var p = request.querystring["querystringname"];
if(p!=null)
{
return "add.aspx?id1=" + p + "&id2=" + mydropdownlist.selectedvalue + "&id3=" + id;
}
return "";
}发布于 2011-12-20 21:21:30
我会将请求数据与响应数据分开。这样,如果有变化(用表单post替换下拉列表或querystring,等等),网格视图就不会改变。
代码背后
protected string Value1{get {return Request.QueryString["key"];}}
protected string Value2 {get {return DropDown.SelectedValue;}}标记
<GridView ID="myGridView" runat="Server">
<Columns>
...
<asp:TemplateField HeaderText="Action">
<ItemTemplate>
<a href='<%=string.Format("add.aspx?id1={0}&id2={1}&id3={2}", Value1, Value2, Eval("ID"))%>'>View Details</a>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>https://stackoverflow.com/questions/8581928
复制相似问题