在gridviewitemtemplate中使用QueryStringParameter和ControlParamete



我有一个ASP。网络应用程序。这个应用程序有一个GridView。这个GridView有一个TemplateField需要包含超链接。我希望这些超链接导航到

形式的超链接
add.aspx?id1=[QueryStringParameterValue]&id2=[ControlParameterValue]&id3=[CurrentRecordID]

有办法做到这一点吗?如果没有,什么是最好的方法将用户重定向到另一个页面,并考虑:

  • 当前查询字符串(QueryStringParameterValue)的值
  • 下拉列表中选定项的值(ControlParameterValue)
  • 当前记录ID

目前,我的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中的三个项目连接起来?

谢谢!

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 "";
}

我将把请求数据与响应数据分开。这样,如果有什么变化(将下拉列表或查询字符串替换为表单post等),gridview将不会改变。

背后的代码
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>

相关内容

  • 没有找到相关文章

最新更新