![](/img/trans.png)
[英]How to get DataKeyNames value of gridview inside LinkButton's click event using c# asp.net
[英]Get record id using GridView Linkbutton on one page and get on another page in ASP.NET using C#
如何使用C#
ASP.NET
的id
從一個頁面提交到另一個頁面? 我有一個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"]
其他替代方案:
查看狀態
控制狀態
隱藏的領域
餅干
查詢字符串
申請狀態
會話狀態
檔案屬性
ASP.NET中的狀態管理技術:
http://msdn.microsoft.com/en-us/library/75x4ha6s%28v=vs.100%29.aspx
希望它有所幫助。
我會像這樣使用HyperLinkField字段
<asp:HyperLinkField DataNavigateUrlFields="Database ID Field"
DataNavigateUrlFormatString="~/PageName.aspx?ID={0}"
DataTextField="Database ID Field" HeaderText="ID" />
然后在您重定向到的頁面上,您將檢查查詢字符串的ID
string id = Request.QueryString["ID"]
在源頁面中設置LinkButton
的PostBackUrl
和CommandArgument
屬性,如下所示:
<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.