【问题标题】:Get record id using GridView Linkbutton on one page and get on another page in ASP.NET using C#在一个页面上使用 GridView Linkbutton 获取记录 id,并在 ASP.NET 中使用 C# 获取另一个页面
【发布时间】:2013-05-13 13:25:31
【问题描述】:

如何使用C#id 从一个页面提交到ASP.NET 中的另一个页面?我有一个 GridView 控件,每条记录都包含一个链接按钮:

<asp:TemplateField>              
    <ItemTemplate>
      <asp:LinkButton ID="lbtn_naatscat" runat="server" Text="arshad" CommandName="view_user_naats_gv" Font-Underline="false" />
    </ItemTemplate>
</asp:TemplateField>

我已将id 绑定到链接按钮:

if (e.Row.RowType == DataControlRowType.DataRow)
{
    ((LinkButton)e.Row.FindControl("lbtn_naatscat")).CommandArgument 
        = DataBinder.Eval(e.Row.DataItem, "cate_id").ToString();
    ((LinkButton)e.Row.FindControl("lbtn_naatscat")).Text 
        = DataBinder.Eval(e.Row.DataItem, "title").ToString();
}

现在我想在用户单击此链接按钮时将此 id 传递到另一个页面。

【问题讨论】:

  • 你可以在请求的查询字符串中传递值
  • 取决于你是想使用post还是get。

标签: c# linkbutton


【解决方案1】:

您可以处理LinkButton's Command event 并使用CommandArgument

void LinkButton_Command(Object sender, CommandEventArgs e) 
{
    if(e.CommandName == "view_user_naats_gv")
    {
        Resonse.Redirect("UserNaats.aspx?catID=" + e.CommandArgument.ToString());
    }
}

【讨论】:

    【解决方案2】:

    您可以为此创建一个Session

    如下操作:

    Session["Id"]=e.CommandArgument.ToString() //Id you want to pass to next page
    

    通过这种方式,您的 Session 变量将被创建。您将能够在下一页访问它。

    在下一页检索时:

    Id=Session["Id"]
    

    其他选择:

    1. 查看状态

    2. 控制状态

    3. 隐藏字段

    4. Cookie

    5. 查询字符串

    6. 应用程序状态

    7. 会话状态

    8. 配置文件属性

    ASP.NET 中的状态管理技术:

    http://msdn.microsoft.com/en-us/library/75x4ha6s%28v=vs.100%29.aspx

    希望对您有所帮助。

    【讨论】:

      【解决方案3】:

      将其存储在隐藏字段中,并在代码隐藏文件的下一页访问它。

      Here is another SO post with

      Another example of passing hidden field in ASP

      祝你好运!

      【讨论】:

        【解决方案4】:

        我会像这样使用HyperLinkField 字段

         <asp:HyperLinkField DataNavigateUrlFields="Database ID Field" 
                                   DataNavigateUrlFormatString="~/PageName.aspx?ID={0}" 
                                   DataTextField="Database ID Field" HeaderText="ID" />
        

        然后在您重定向到的页面上,您将检查 ID 的查询字符串

           string id = Request.QueryString["ID"]
        

        【讨论】:

          【解决方案5】:

          在源页面中设置LinkButtonPostBackUrlCommandArgument 属性,如下所示:

           <asp:TemplateField>              
             <ItemTemplate>
               <asp:LinkButton ID="lbtn_naatscat" runat="server" Text="arshad" CommandName="view_user_naats_gv" Font-Underline="false" PostBackUrl="~/YourPage.aspx" CommandArgument='<%# Eval("submitid")%>' />
             </ItemTemplate>
           </asp:TemplateField>
          

          然后在您提交给您的页面上,您可以将以下指令放置到DestinationPage.aspx 页面:

          <%@ PreviousPageType VirtualPath="~/SourcePage.aspx" %>
          

          我不知道&lt;ItemTemplate&gt; 标签来自什么类型的容器(ListView?)。但是您可以在DestinationPage.aspx 页面中找到控件,如下所示:

          if (Page.PreviousPage != null && Page.PreviousPage.IsCrossPagePostback) {
            // if you use the PreviousPageDirective you should be able to access the ListView
            // property directly
            // var listView = Page.PreviousPage.MyListView;
            var listView = Page.PreviousPage.FindControl("MyListView") as ListView;
            var linkButton = listView.FindControl("lbtn_naatscat") as LinkButton;
            var submitId = linkButton.CommandArgument;
          }
          

          【讨论】:

            【解决方案6】:

            使用Row_Command 事件,您可以使用查询字符串将其发送到下一页。

            protected void gvDeals_RowCommand(object sender, GridViewCommandEventArgs e)
            {
               if(e.CommandName.Equals("MyCommand")
               {
                  string value=calculate();
                  Response.Redirect("~/MyPage.aspx?item=" + value);
               }
            }
            

            【讨论】:

              【解决方案7】:

              我认为在 GridView 中使用超链接会更有意义。 例如:

              <ItemTemplate>
                  <asp:HyperLink ID="link_naatscat" runat="Server"                                             
                      Text="arshad"
                      ToolTip="arshad"
                      NavigateUrl=<%#"~/YourPage.aspx?id=" + Eval("submitid")%>>
                  </asp:HyperLink> 
              </ItemTemplate>
              

              【讨论】:

                【解决方案8】:

                以这种方式发送 id

                 Response.Redirect("/yourpage.aspx?" + id);
                

                以这种方式得到它

                 String s = "";
                            foreach (String item in Request.QueryString.Keys)
                            {
                                s = Request.QueryString[item];
                            }
                            if (s != "")
                            {
                                id = Int32.Parse(s);
                            }
                

                【讨论】:

                • 为什么要为单个项目循环集合?您可以使用适当的空包装器直接访问该项目。
                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2016-04-06
                • 2013-04-29
                • 1970-01-01
                • 2012-11-22
                • 1970-01-01
                • 2019-05-08
                • 1970-01-01
                相关资源
                最近更新 更多