3

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

<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现在,当用户单击此链接按钮时,我想将其传递到另一个页面。

4

8 回答 8

3

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

void LinkButton_Command(Object sender, CommandEventArgs e) 
{
    if(e.CommandName == "view_user_naats_gv")
    {
        Resonse.Redirect("UserNaats.aspx?catID=" + e.CommandArgument.ToString());
    }
}
于 2013-05-13T13:30:28.093 回答
2

Session您可以为此创建一个。

执行以下操作:

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

这样,您的 Session 变量将被创建。您将能够在下一页上访问它。

在下一页检索它时:

Id=Session["Id"]

其他选择:

  1. 查看状态

  2. 控制状态

  3. 隐藏字段

  4. 饼干

  5. 查询字符串

  6. 应用状态

  7. 会话状态

  8. 配置文件属性

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

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

希望它有帮助。

于 2013-05-13T13:29:38.830 回答
1

我会像这样使用HyperLinkField字段

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

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

   string id = Request.QueryString["ID"]
于 2013-05-13T13:33:04.910 回答
1

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

 <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" %>

我不知道<ItemTemplate>标签来自什么类型的容器(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;
}
于 2013-05-13T13:59:09.607 回答
1

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

这是另一个SO帖子

另一个在 ASP 中传递隐藏字段的例子

祝你好运!

于 2013-05-13T13:29:03.483 回答
0

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

protected void gvDeals_RowCommand(object sender, GridViewCommandEventArgs e)
{
   if(e.CommandName.Equals("MyCommand")
   {
      string value=calculate();
      Response.Redirect("~/MyPage.aspx?item=" + value);
   }
}
于 2013-05-13T13:31:02.993 回答
0

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

<ItemTemplate>
    <asp:HyperLink ID="link_naatscat" runat="Server"                                             
        Text="arshad"
        ToolTip="arshad"
        NavigateUrl=<%#"~/YourPage.aspx?id=" + Eval("submitid")%>>
    </asp:HyperLink> 
</ItemTemplate>
于 2013-05-13T13:32:11.087 回答
0

以这种方式发送 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);
            }
于 2013-05-13T13:35:05.920 回答