如何获取GRIDVIEW选中行索引值,并传递到下一个页面。。

我在a.aspx页面的GRIDVIEW中放了一个LinkButton,我想当点击LinkButton时获取GRIDVIEW中改行的某一个值,然后将这个值传递到b.aspx... 我在a.aspx页面的GRIDVIEW中放了一个LinkButton,我想当点击LinkButton时获取GRIDVIEW中改行的某一个值,然后将这个值传递到b.aspx页面中,要怎么做。急求高手指教啊。。能实现再加分。。 展开
 我来答
VanSean
2011-12-30
知道答主
回答量:7
采纳率:0%
帮助的人:11.9万
展开全部
linkbutton有个属性CommandArgument绑定的时候给这个属性赋与你想传的值。
如id:
CommandArgument=‘Eval("id")’
然后通过onclick事件去触发:
LinkButton lkb = sender as LinkButton;
string id=lkb.CommandArgument;这个id就是你要传递到下个页面的值。
最后跳转:
可以用URL传参
Response.Redirect("b.aspx?id="+id);
也可以用Session去传
Session["id"]=id;
Response.Redirect("b.aspx“);
再在b页面获取这个Session
注:中文的URL传参需要去编码HttpUtility.UrlEncode(id);

希望对你有帮助^-^
百度网友d8cd15553
2011-12-20 · TA获得超过149个赞
知道答主
回答量:56
采纳率:100%
帮助的人:70.2万
展开全部
首先,模版列中有LinkButton, 在它的单击事件里写
protected void LinkButton1_Click(object sender, EventArgs e)
{
//取得别单击的LinkButton
LinkButton lb=(LinkButton)sender;
//取得当前行号
int rowIndex = ((GridViewRow)lb.NamingContainer).RowIndex;
//取当前行、第1列的值;同理,取第i列:Cells[i-1]
string id = GridView1.Rows[rowIndex].Cells[0].Text;
//跳到下一页
Response.Redirect("b.aspx?ID="+id);
}

//在下一页获取
string s = Request.QueryString["ID"].ToString();

/注意:如果你要取的值在模版列中的TextBox里,那取法就不一样了
string id = ((TextBox)GridView1.Rows[rowIndex].Cells[0].FindControl("TextBox的Name属性")).Text;
是不是感觉挺麻烦,事实上Asp.net不提倡这样实现页面跳转的,有专门的HyperLinkField字段,页面代码如下就可以实现:不用写后台代码
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" >
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID" />
<asp:BoundField DataField="Name" HeaderText="名字" />
<asp:HyperLinkField
DataNavigateUrlFields="ID"
DataNavigateUrlFormatString="b.aspx?ID={0}"
DataTextField="Name"
DataTextFormatString="Click Here {0}" HeaderText="连接" />
</Columns>
</asp:GridView>
-------------------------------------------------------
DataNavigateUrlFields="ID" //你要传的字段
DataNavigateUrlFormatString="b.aspx?ID={0}" //跳转地址,{0}占位符
DataTextField="Name" //要显示的字段
DataTextFormatString="Click Here {0}" HeaderText="连接" /> //类似linkButon.text=click here name1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhuyanjie1124
2011-12-19
知道答主
回答量:8
采纳率:0%
帮助的人:3.9万
展开全部
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
}
其中GridView1.EditIndex里面就获得了当前编辑行的索引,可以把 GridView1.EditIndex写在session中(当然也可以写在hiddenfield中,但是多用户操作的时候会有问题),然后在B.aspx页面中用Request[" GridView1.EditIndex "]就可以得到了啊
追问
不是很明白啊?能说明白点吗?麻烦了。。
追答
先具体说说你的需求吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
29...2@qq.com
2011-12-20 · 超过24用户采纳过TA的回答
知道答主
回答量:126
采纳率:46%
帮助的人:21万
展开全部
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" <Columns>
<asp:TemplateField HeaderText="派车单号">
<ItemTemplate>
<asp:HyperLink ID="HyperLink2" runat="server" NavigateUrl='<%# Eval("传得值", "b.aspx?传的值={0}") %>'
Text='<%# Bind("显示的值") %>' ForeColor="blue"></asp:HyperLink>
</ItemTemplate>
<HeaderStyle Width="100px" />
</asp:TemplateField>
</Columns>
</asp:GridView>

不懂可以找我
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ay5333561
2011-12-21 · TA获得超过192个赞
知道答主
回答量:27
采纳率:0%
帮助的人:11.4万
展开全部
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)

{

//编辑按扭

if (e.CommandName == "Edit")

{

//设置编辑行高亮显示

this.GridView1.EditRowStyle.BackColor = Color.FromName("#F7CE90");

//string index= this.GridView1.DataKeys[Convert.ToInt32(e.CommandArgument)].Value.ToString();

int index = Convert.ToInt32(e.CommandArgument);

GridViewRow row = GridView1.Rows[index];

string xh3 = row.Cells[3].Text;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式