簡體   English   中英

在一個頁面上使用GridView Linkbutton獲取記錄ID,並使用C#在ASP.NET中獲取另一個頁面

[英]Get record id using GridView Linkbutton on one page and get on another page in ASP.NET using C#

如何使用C# ASP.NETid從一個頁面提交到另一個頁面? 我有一個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傳遞給另一個頁面。

您可以處理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());
    }
}

您可以為此目的創建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

希望它有所幫助。

將其存儲在隱藏字段中,並在代碼隱藏文件的下一頁上訪問它。

這是另一篇SO帖子

在ASP中傳遞隱藏字段的另一個例子

祝你好運!

我會像這樣使用HyperLinkField字段

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

然后在您重定向到的頁面上,您將檢查查詢字符串的ID

   string id = Request.QueryString["ID"]

在源頁面中設置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" %>

我不知道<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;
}

使用Row_Command事件,您可以使用查詢字符串將其發送到下一頁。

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

我認為在GridView中使用超鏈接會更有意義。 例如:

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

以這種方式發送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);
            }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM