【问题标题】:Using a QueryStringParameter and ControlParameter in a GridView ItemTemplate in ASP.NET在 ASP.NET 的 GridView ItemTemplate 中使用 QueryStringParameter 和 ControlParameter
【发布时间】:2012-01-24 19:10:41
【问题描述】:

我有一个 ASP.NET 应用程序。这个应用程序有一个 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 中的三个项目?

谢谢!

【问题讨论】:

    标签: asp.net webforms


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我会将请求数据与响应数据分开。这样,如果发生变化(将下拉列表或查询字符串替换为表单帖子等),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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-10
        • 1970-01-01
        • 1970-01-01
        • 2021-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-04
        相关资源
        最近更新 更多