gridveiw中checkbox多项后传值给其他页面怎么实现,帮忙解决一下多谢,是用Session还是怎么办?如何传和接?

qq_35468565 2017-03-07 04:12:29
刚刚在帮助下实现了通过button获取gridview中的数据代码如下:
string check = "";
int tmp = 0;
for (int i = 0; i < this.GridView1.Rows.Count; i++)
{
CheckBox chk = (CheckBox)GridView1.Rows[i].Cells[0].FindControl("CheckBox1");

if (chk != null && chk.Checked)
{
check = GridView1.Rows[i].Cells[2].Text.ToString();//获取名称列
tmp++;
}
然后这些勾选的行的名称获取出来了,要怎么把这些名称列在其他页面中提取呢?能不能举个具体些的例子帮助我一下哈。
之前百度说用session存数组,但是数组不是很会,还有说用","隔开用split方法的,但是我是自学,这些东西都不怎么会呢。
...全文
409 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
大然然 2017-03-08
  • 打赏
  • 举报
回复
引用 21 楼 qq_35468565 的回复:
[quote=引用 19 楼 qq_25095899 的回复:] [quote=引用 17 楼 qq_35468565 的回复:] [quote=引用 14 楼 qq_25095899 的回复:] [quote=引用 13 楼 qq_35468565 的回复:] [quote=引用 10 楼 qq_25095899 的回复:] [quote=引用 9 楼 qq_35468565 的回复:] [quote=引用 1 楼 qq_25095899 的回复:] string check = ""; int tmp = 0; for (int i = 0; i < this.GridView1.Rows.Count; i++) { CheckBox chk = (CheckBox)GridView1.Rows[i].Cells[0].FindControl("CheckBox1"); if (chk != null && chk.Checked) { check =check +“,” + GridView1.Rows[i].Cells[2].Text.ToString();//获取名称列 tmp++; } 这样你的列的名称全部得到了,并且是这样的格式 check = "列1,列2,列3,列4" 注意有个逗号,这个逗号你可以随便改 然后传递到其他页面 Response.Redirect("PurchaseRequisitionEdit.aspx?para="+ check); 然后在PurchaseRequisitionEdit.aspx接收para List<string> check = Request["para"].split(',').ToList(); 这就是一个数组,里面就是你上个页面里点击的所有CheckBox 对于的列名称 我随手写的,可能有些错,你自己改一下
我改好了,请问然后list里面的东西要怎么分别取出来呢[/quote] List<string> check = Request["para"].split(',').ToList(); foreach(string tmp in check ) { // tmp 就是每一个check值 }[/quote] 我又改成这样还是有问题: Operation operation = new Operation(); protected void Page_Load(object sender, EventArgs e) { if(!IsPostBack) { GridViewBind(); } } private void GridViewBind() { DataSet ds = null; List<string> check = Request["para"].Split(',').ToList(); foreach (string tmp in check) { ds= operation.FindRequestById(tmp); } GridView1.DataSource = ds; GridView1.DataBind(); } 这样的话,我多选以后显示出来的东西还是只有后点击的那一个的全部数据[/quote] 这个我是知道的,因为你再循环,ds就是你最后的那个name,而不是全部name 有2个办法, 1, 你循环 ds= operation.FindRequestById(tmp); 把N个ds存起来,最后合并成一个最终的ds, 2,从写一个operation.FindRequestByAllId(List<string> list);让他不要接受一个name,而是所有name[/quote] 小弟愚笨。。。foreach不是已经循环了吗,难道还要在foreach外面再加个FOR循环吗?[/quote] dataset result = new DataSet (); DataSet ds = null; List<string> check = Request["para"].Split(',').ToList(); foreach (string tmp in check) { ds= operation.FindRequestById(tmp); result .Merge(ds,true,MissingSchemaAction.AddWithKey); } ds 有个Merge合并方法,你循环的时候每个查出来都合并,最后合并完了,就是全部了的ds了, 随手打的,你自己弄一下,反正叫Merge方法[/quote] 是可以的了,我自己datasource刚刚忘记改成result了,谢谢你帮我解决了这个问题,真的多谢了。[/quote] OK, 三八节快乐,哇哈哈哈哈
qq_35468565 2017-03-08
  • 打赏
  • 举报
回复
引用 19 楼 qq_25095899 的回复:
[quote=引用 17 楼 qq_35468565 的回复:] [quote=引用 14 楼 qq_25095899 的回复:] [quote=引用 13 楼 qq_35468565 的回复:] [quote=引用 10 楼 qq_25095899 的回复:] [quote=引用 9 楼 qq_35468565 的回复:] [quote=引用 1 楼 qq_25095899 的回复:] string check = ""; int tmp = 0; for (int i = 0; i < this.GridView1.Rows.Count; i++) { CheckBox chk = (CheckBox)GridView1.Rows[i].Cells[0].FindControl("CheckBox1"); if (chk != null && chk.Checked) { check =check +“,” + GridView1.Rows[i].Cells[2].Text.ToString();//获取名称列 tmp++; } 这样你的列的名称全部得到了,并且是这样的格式 check = "列1,列2,列3,列4" 注意有个逗号,这个逗号你可以随便改 然后传递到其他页面 Response.Redirect("PurchaseRequisitionEdit.aspx?para="+ check); 然后在PurchaseRequisitionEdit.aspx接收para List<string> check = Request["para"].split(',').ToList(); 这就是一个数组,里面就是你上个页面里点击的所有CheckBox 对于的列名称 我随手写的,可能有些错,你自己改一下
我改好了,请问然后list里面的东西要怎么分别取出来呢[/quote] List<string> check = Request["para"].split(',').ToList(); foreach(string tmp in check ) { // tmp 就是每一个check值 }[/quote] 我又改成这样还是有问题: Operation operation = new Operation(); protected void Page_Load(object sender, EventArgs e) { if(!IsPostBack) { GridViewBind(); } } private void GridViewBind() { DataSet ds = null; List<string> check = Request["para"].Split(',').ToList(); foreach (string tmp in check) { ds= operation.FindRequestById(tmp); } GridView1.DataSource = ds; GridView1.DataBind(); } 这样的话,我多选以后显示出来的东西还是只有后点击的那一个的全部数据[/quote] 这个我是知道的,因为你再循环,ds就是你最后的那个name,而不是全部name 有2个办法, 1, 你循环 ds= operation.FindRequestById(tmp); 把N个ds存起来,最后合并成一个最终的ds, 2,从写一个operation.FindRequestByAllId(List<string> list);让他不要接受一个name,而是所有name[/quote] 小弟愚笨。。。foreach不是已经循环了吗,难道还要在foreach外面再加个FOR循环吗?[/quote] dataset result = new DataSet (); DataSet ds = null; List<string> check = Request["para"].Split(',').ToList(); foreach (string tmp in check) { ds= operation.FindRequestById(tmp); result .Merge(ds,true,MissingSchemaAction.AddWithKey); } ds 有个Merge合并方法,你循环的时候每个查出来都合并,最后合并完了,就是全部了的ds了, 随手打的,你自己弄一下,反正叫Merge方法[/quote] 是可以的了,我自己datasource刚刚忘记改成result了,谢谢你帮我解决了这个问题,真的多谢了。
qq_35468565 2017-03-08
  • 打赏
  • 举报
回复
引用 19 楼 qq_25095899 的回复:
[quote=引用 17 楼 qq_35468565 的回复:] [quote=引用 14 楼 qq_25095899 的回复:] [quote=引用 13 楼 qq_35468565 的回复:] [quote=引用 10 楼 qq_25095899 的回复:] [quote=引用 9 楼 qq_35468565 的回复:] [quote=引用 1 楼 qq_25095899 的回复:] string check = ""; int tmp = 0; for (int i = 0; i < this.GridView1.Rows.Count; i++) { CheckBox chk = (CheckBox)GridView1.Rows[i].Cells[0].FindControl("CheckBox1"); if (chk != null && chk.Checked) { check =check +“,” + GridView1.Rows[i].Cells[2].Text.ToString();//获取名称列 tmp++; } 这样你的列的名称全部得到了,并且是这样的格式 check = "列1,列2,列3,列4" 注意有个逗号,这个逗号你可以随便改 然后传递到其他页面 Response.Redirect("PurchaseRequisitionEdit.aspx?para="+ check); 然后在PurchaseRequisitionEdit.aspx接收para List<string> check = Request["para"].split(',').ToList(); 这就是一个数组,里面就是你上个页面里点击的所有CheckBox 对于的列名称 我随手写的,可能有些错,你自己改一下
我改好了,请问然后list里面的东西要怎么分别取出来呢[/quote] List<string> check = Request["para"].split(',').ToList(); foreach(string tmp in check ) { // tmp 就是每一个check值 }[/quote] 我又改成这样还是有问题: Operation operation = new Operation(); protected void Page_Load(object sender, EventArgs e) { if(!IsPostBack) { GridViewBind(); } } private void GridViewBind() { DataSet ds = null; List<string> check = Request["para"].Split(',').ToList(); foreach (string tmp in check) { ds= operation.FindRequestById(tmp); } GridView1.DataSource = ds; GridView1.DataBind(); } 这样的话,我多选以后显示出来的东西还是只有后点击的那一个的全部数据[/quote] 这个我是知道的,因为你再循环,ds就是你最后的那个name,而不是全部name 有2个办法, 1, 你循环 ds= operation.FindRequestById(tmp); 把N个ds存起来,最后合并成一个最终的ds, 2,从写一个operation.FindRequestByAllId(List<string> list);让他不要接受一个name,而是所有name[/quote] 小弟愚笨。。。foreach不是已经循环了吗,难道还要在foreach外面再加个FOR循环吗?[/quote] dataset result = new DataSet (); DataSet ds = null; List<string> check = Request["para"].Split(',').ToList(); foreach (string tmp in check) { ds= operation.FindRequestById(tmp); result .Merge(ds,true,MissingSchemaAction.AddWithKey); } ds 有个Merge合并方法,你循环的时候每个查出来都合并,最后合并完了,就是全部了的ds了, 随手打的,你自己弄一下,反正叫Merge方法[/quote] 还是只出一行数据
大然然 2017-03-08
  • 打赏
  • 举报
回复
引用 17 楼 qq_35468565 的回复:
[quote=引用 14 楼 qq_25095899 的回复:] [quote=引用 13 楼 qq_35468565 的回复:] [quote=引用 10 楼 qq_25095899 的回复:] [quote=引用 9 楼 qq_35468565 的回复:] [quote=引用 1 楼 qq_25095899 的回复:] string check = ""; int tmp = 0; for (int i = 0; i < this.GridView1.Rows.Count; i++) { CheckBox chk = (CheckBox)GridView1.Rows[i].Cells[0].FindControl("CheckBox1"); if (chk != null && chk.Checked) { check =check +“,” + GridView1.Rows[i].Cells[2].Text.ToString();//获取名称列 tmp++; } 这样你的列的名称全部得到了,并且是这样的格式 check = "列1,列2,列3,列4" 注意有个逗号,这个逗号你可以随便改 然后传递到其他页面 Response.Redirect("PurchaseRequisitionEdit.aspx?para="+ check); 然后在PurchaseRequisitionEdit.aspx接收para List<string> check = Request["para"].split(',').ToList(); 这就是一个数组,里面就是你上个页面里点击的所有CheckBox 对于的列名称 我随手写的,可能有些错,你自己改一下
我改好了,请问然后list里面的东西要怎么分别取出来呢[/quote] List<string> check = Request["para"].split(',').ToList(); foreach(string tmp in check ) { // tmp 就是每一个check值 }[/quote] 我又改成这样还是有问题: Operation operation = new Operation(); protected void Page_Load(object sender, EventArgs e) { if(!IsPostBack) { GridViewBind(); } } private void GridViewBind() { DataSet ds = null; List<string> check = Request["para"].Split(',').ToList(); foreach (string tmp in check) { ds= operation.FindRequestById(tmp); } GridView1.DataSource = ds; GridView1.DataBind(); } 这样的话,我多选以后显示出来的东西还是只有后点击的那一个的全部数据[/quote] 这个我是知道的,因为你再循环,ds就是你最后的那个name,而不是全部name 有2个办法, 1, 你循环 ds= operation.FindRequestById(tmp); 把N个ds存起来,最后合并成一个最终的ds, 2,从写一个operation.FindRequestByAllId(List<string> list);让他不要接受一个name,而是所有name[/quote] 小弟愚笨。。。foreach不是已经循环了吗,难道还要在foreach外面再加个FOR循环吗?[/quote] dataset result = new DataSet (); DataSet ds = null; List<string> check = Request["para"].Split(',').ToList(); foreach (string tmp in check) { ds= operation.FindRequestById(tmp); result .Merge(ds,true,MissingSchemaAction.AddWithKey); } ds 有个Merge合并方法,你循环的时候每个查出来都合并,最后合并完了,就是全部了的ds了, 随手打的,你自己弄一下,反正叫Merge方法
qq_35468565 2017-03-08
  • 打赏
  • 举报
回复
引用 16 楼 qq_25095899 的回复:
[quote=引用 15 楼 qq_35468565 的回复:] [quote=引用 12 楼 qq_25095899 的回复:] [quote=引用 11 楼 qq_35468565 的回复:] [quote=引用 10 楼 qq_25095899 的回复:] [quote=引用 9 楼 qq_35468565 的回复:] [quote=引用 1 楼 qq_25095899 的回复:] string check = ""; int tmp = 0; for (int i = 0; i < this.GridView1.Rows.Count; i++) { CheckBox chk = (CheckBox)GridView1.Rows[i].Cells[0].FindControl("CheckBox1"); if (chk != null && chk.Checked) { check =check +“,” + GridView1.Rows[i].Cells[2].Text.ToString();//获取名称列 tmp++; } 这样你的列的名称全部得到了,并且是这样的格式 check = "列1,列2,列3,列4" 注意有个逗号,这个逗号你可以随便改 然后传递到其他页面 Response.Redirect("PurchaseRequisitionEdit.aspx?para="+ check); 然后在PurchaseRequisitionEdit.aspx接收para List<string> check = Request["para"].split(',').ToList(); 这就是一个数组,里面就是你上个页面里点击的所有CheckBox 对于的列名称 我随手写的,可能有些错,你自己改一下
我改好了,请问然后list里面的东西要怎么分别取出来呢[/quote] List<string> check = Request["para"].split(',').ToList(); foreach(string tmp in check ) { // tmp 就是每一个check值 }[/quote] 我在接收页面这么写的: Operation operation = new Operation(); protected void Page_Load(object sender, EventArgs e) { if(!IsPostBack) { List<string> check = Request["para"].Split(',').ToList(); foreach (string tmp in check) { operation.FindRequestByName(); } GridViewBind(); } } private void GridViewBind() { DataSet ds = null; ds = operation.FindRequestByName(); GridView1.DataSource = ds; GridView1.DataBind(); } Operation类里面写的FindRequestByName()方法用来根据name获取其他信息,但是好像dataset里面写的不对,没有东西出来,最后麻烦你一下看看这里是怎么回事哈。[/quote] ds = operation.FindRequestByName(); 根据name获取其他信息 肯定有问题啊,你传递过去的是一个数组,是多个值, 然后你FindRequestByName(); 参数又是一个值,一个name,你是不是想循环??,把所有的name传递进去FindRequestByName(); 然后查找?? 那你要给我看看FindRequestByName()里的代码[/quote] 我改成根据ID查找,Name其他地方有用。 public DataSet FindRequestById(string ID) { SqlParameter[] parms = { data.MakeInParam("@ID",SqlDbType.VarChar,50,ID), }; return (data.RunProcReturn("select * from 请购表 where ID=@ID", parms, "请购表")); } 然后我刚刚代码改了,多选只显示所有选中里面最下面的一行数据。改的代码如下: private void GridViewBind() { DataSet ds = null; List<string> check = Request["para"].Split(',').ToList(); foreach (string tmp in check) { ds= operation.FindRequestById(tmp); } GridView1.DataSource = ds; GridView1.DataBind(); }[/quote] 我知道你Name其他地方有用。我的意思不是你去改那个方法,我是说你可以在复制一个方法,在去改,不影响你之前的方法, 比如你某个方法叫operation.FindRequestByName(), 你复制粘贴,改成operation.FindRequestByName1(),在小改一下里面的内容,两不误[/quote] 没事name ,id都能查这没关系,关键是我对您说的operation.FindRequestByAllId(List<string> list),里面要写啥一点不了解。
qq_35468565 2017-03-08
  • 打赏
  • 举报
回复
引用 14 楼 qq_25095899 的回复:
[quote=引用 13 楼 qq_35468565 的回复:] [quote=引用 10 楼 qq_25095899 的回复:] [quote=引用 9 楼 qq_35468565 的回复:] [quote=引用 1 楼 qq_25095899 的回复:] string check = ""; int tmp = 0; for (int i = 0; i < this.GridView1.Rows.Count; i++) { CheckBox chk = (CheckBox)GridView1.Rows[i].Cells[0].FindControl("CheckBox1"); if (chk != null && chk.Checked) { check =check +“,” + GridView1.Rows[i].Cells[2].Text.ToString();//获取名称列 tmp++; } 这样你的列的名称全部得到了,并且是这样的格式 check = "列1,列2,列3,列4" 注意有个逗号,这个逗号你可以随便改 然后传递到其他页面 Response.Redirect("PurchaseRequisitionEdit.aspx?para="+ check); 然后在PurchaseRequisitionEdit.aspx接收para List<string> check = Request["para"].split(',').ToList(); 这就是一个数组,里面就是你上个页面里点击的所有CheckBox 对于的列名称 我随手写的,可能有些错,你自己改一下
我改好了,请问然后list里面的东西要怎么分别取出来呢[/quote] List<string> check = Request["para"].split(',').ToList(); foreach(string tmp in check ) { // tmp 就是每一个check值 }[/quote] 我又改成这样还是有问题: Operation operation = new Operation(); protected void Page_Load(object sender, EventArgs e) { if(!IsPostBack) { GridViewBind(); } } private void GridViewBind() { DataSet ds = null; List<string> check = Request["para"].Split(',').ToList(); foreach (string tmp in check) { ds= operation.FindRequestById(tmp); } GridView1.DataSource = ds; GridView1.DataBind(); } 这样的话,我多选以后显示出来的东西还是只有后点击的那一个的全部数据[/quote] 这个我是知道的,因为你再循环,ds就是你最后的那个name,而不是全部name 有2个办法, 1, 你循环 ds= operation.FindRequestById(tmp); 把N个ds存起来,最后合并成一个最终的ds, 2,从写一个operation.FindRequestByAllId(List<string> list);让他不要接受一个name,而是所有name[/quote] 小弟愚笨。。。foreach不是已经循环了吗,难道还要在foreach外面再加个FOR循环吗?
大然然 2017-03-08
  • 打赏
  • 举报
回复
引用 15 楼 qq_35468565 的回复:
[quote=引用 12 楼 qq_25095899 的回复:] [quote=引用 11 楼 qq_35468565 的回复:] [quote=引用 10 楼 qq_25095899 的回复:] [quote=引用 9 楼 qq_35468565 的回复:] [quote=引用 1 楼 qq_25095899 的回复:] string check = ""; int tmp = 0; for (int i = 0; i < this.GridView1.Rows.Count; i++) { CheckBox chk = (CheckBox)GridView1.Rows[i].Cells[0].FindControl("CheckBox1"); if (chk != null && chk.Checked) { check =check +“,” + GridView1.Rows[i].Cells[2].Text.ToString();//获取名称列 tmp++; } 这样你的列的名称全部得到了,并且是这样的格式 check = "列1,列2,列3,列4" 注意有个逗号,这个逗号你可以随便改 然后传递到其他页面 Response.Redirect("PurchaseRequisitionEdit.aspx?para="+ check); 然后在PurchaseRequisitionEdit.aspx接收para List<string> check = Request["para"].split(',').ToList(); 这就是一个数组,里面就是你上个页面里点击的所有CheckBox 对于的列名称 我随手写的,可能有些错,你自己改一下
我改好了,请问然后list里面的东西要怎么分别取出来呢[/quote] List<string> check = Request["para"].split(',').ToList(); foreach(string tmp in check ) { // tmp 就是每一个check值 }[/quote] 我在接收页面这么写的: Operation operation = new Operation(); protected void Page_Load(object sender, EventArgs e) { if(!IsPostBack) { List<string> check = Request["para"].Split(',').ToList(); foreach (string tmp in check) { operation.FindRequestByName(); } GridViewBind(); } } private void GridViewBind() { DataSet ds = null; ds = operation.FindRequestByName(); GridView1.DataSource = ds; GridView1.DataBind(); } Operation类里面写的FindRequestByName()方法用来根据name获取其他信息,但是好像dataset里面写的不对,没有东西出来,最后麻烦你一下看看这里是怎么回事哈。[/quote] ds = operation.FindRequestByName(); 根据name获取其他信息 肯定有问题啊,你传递过去的是一个数组,是多个值, 然后你FindRequestByName(); 参数又是一个值,一个name,你是不是想循环??,把所有的name传递进去FindRequestByName(); 然后查找?? 那你要给我看看FindRequestByName()里的代码[/quote] 我改成根据ID查找,Name其他地方有用。 public DataSet FindRequestById(string ID) { SqlParameter[] parms = { data.MakeInParam("@ID",SqlDbType.VarChar,50,ID), }; return (data.RunProcReturn("select * from 请购表 where ID=@ID", parms, "请购表")); } 然后我刚刚代码改了,多选只显示所有选中里面最下面的一行数据。改的代码如下: private void GridViewBind() { DataSet ds = null; List<string> check = Request["para"].Split(',').ToList(); foreach (string tmp in check) { ds= operation.FindRequestById(tmp); } GridView1.DataSource = ds; GridView1.DataBind(); }[/quote] 我知道你Name其他地方有用。我的意思不是你去改那个方法,我是说你可以在复制一个方法,在去改,不影响你之前的方法, 比如你某个方法叫operation.FindRequestByName(), 你复制粘贴,改成operation.FindRequestByName1(),在小改一下里面的内容,两不误
qq_35468565 2017-03-08
  • 打赏
  • 举报
回复
引用 12 楼 qq_25095899 的回复:
[quote=引用 11 楼 qq_35468565 的回复:] [quote=引用 10 楼 qq_25095899 的回复:] [quote=引用 9 楼 qq_35468565 的回复:] [quote=引用 1 楼 qq_25095899 的回复:] string check = ""; int tmp = 0; for (int i = 0; i < this.GridView1.Rows.Count; i++) { CheckBox chk = (CheckBox)GridView1.Rows[i].Cells[0].FindControl("CheckBox1"); if (chk != null && chk.Checked) { check =check +“,” + GridView1.Rows[i].Cells[2].Text.ToString();//获取名称列 tmp++; } 这样你的列的名称全部得到了,并且是这样的格式 check = "列1,列2,列3,列4" 注意有个逗号,这个逗号你可以随便改 然后传递到其他页面 Response.Redirect("PurchaseRequisitionEdit.aspx?para="+ check); 然后在PurchaseRequisitionEdit.aspx接收para List<string> check = Request["para"].split(',').ToList(); 这就是一个数组,里面就是你上个页面里点击的所有CheckBox 对于的列名称 我随手写的,可能有些错,你自己改一下
我改好了,请问然后list里面的东西要怎么分别取出来呢[/quote] List<string> check = Request["para"].split(',').ToList(); foreach(string tmp in check ) { // tmp 就是每一个check值 }[/quote] 我在接收页面这么写的: Operation operation = new Operation(); protected void Page_Load(object sender, EventArgs e) { if(!IsPostBack) { List<string> check = Request["para"].Split(',').ToList(); foreach (string tmp in check) { operation.FindRequestByName(); } GridViewBind(); } } private void GridViewBind() { DataSet ds = null; ds = operation.FindRequestByName(); GridView1.DataSource = ds; GridView1.DataBind(); } Operation类里面写的FindRequestByName()方法用来根据name获取其他信息,但是好像dataset里面写的不对,没有东西出来,最后麻烦你一下看看这里是怎么回事哈。[/quote] ds = operation.FindRequestByName(); 根据name获取其他信息 肯定有问题啊,你传递过去的是一个数组,是多个值, 然后你FindRequestByName(); 参数又是一个值,一个name,你是不是想循环??,把所有的name传递进去FindRequestByName(); 然后查找?? 那你要给我看看FindRequestByName()里的代码[/quote] 我改成根据ID查找,Name其他地方有用。 public DataSet FindRequestById(string ID) { SqlParameter[] parms = { data.MakeInParam("@ID",SqlDbType.VarChar,50,ID), }; return (data.RunProcReturn("select * from 请购表 where ID=@ID", parms, "请购表")); } 然后我刚刚代码改了,多选只显示所有选中里面最下面的一行数据。改的代码如下: private void GridViewBind() { DataSet ds = null; List<string> check = Request["para"].Split(',').ToList(); foreach (string tmp in check) { ds= operation.FindRequestById(tmp); } GridView1.DataSource = ds; GridView1.DataBind(); }
大然然 2017-03-08
  • 打赏
  • 举报
回复
引用 13 楼 qq_35468565 的回复:
[quote=引用 10 楼 qq_25095899 的回复:] [quote=引用 9 楼 qq_35468565 的回复:] [quote=引用 1 楼 qq_25095899 的回复:] string check = ""; int tmp = 0; for (int i = 0; i < this.GridView1.Rows.Count; i++) { CheckBox chk = (CheckBox)GridView1.Rows[i].Cells[0].FindControl("CheckBox1"); if (chk != null && chk.Checked) { check =check +“,” + GridView1.Rows[i].Cells[2].Text.ToString();//获取名称列 tmp++; } 这样你的列的名称全部得到了,并且是这样的格式 check = "列1,列2,列3,列4" 注意有个逗号,这个逗号你可以随便改 然后传递到其他页面 Response.Redirect("PurchaseRequisitionEdit.aspx?para="+ check); 然后在PurchaseRequisitionEdit.aspx接收para List<string> check = Request["para"].split(',').ToList(); 这就是一个数组,里面就是你上个页面里点击的所有CheckBox 对于的列名称 我随手写的,可能有些错,你自己改一下
我改好了,请问然后list里面的东西要怎么分别取出来呢[/quote] List<string> check = Request["para"].split(',').ToList(); foreach(string tmp in check ) { // tmp 就是每一个check值 }[/quote] 我又改成这样还是有问题: Operation operation = new Operation(); protected void Page_Load(object sender, EventArgs e) { if(!IsPostBack) { GridViewBind(); } } private void GridViewBind() { DataSet ds = null; List<string> check = Request["para"].Split(',').ToList(); foreach (string tmp in check) { ds= operation.FindRequestById(tmp); } GridView1.DataSource = ds; GridView1.DataBind(); } 这样的话,我多选以后显示出来的东西还是只有后点击的那一个的全部数据[/quote] 这个我是知道的,因为你再循环,ds就是你最后的那个name,而不是全部name 有2个办法, 1, 你循环 ds= operation.FindRequestById(tmp); 把N个ds存起来,最后合并成一个最终的ds, 2,从写一个operation.FindRequestByAllId(List<string> list);让他不要接受一个name,而是所有name
qq_35468565 2017-03-08
  • 打赏
  • 举报
回复
引用 10 楼 qq_25095899 的回复:
[quote=引用 9 楼 qq_35468565 的回复:] [quote=引用 1 楼 qq_25095899 的回复:] string check = ""; int tmp = 0; for (int i = 0; i < this.GridView1.Rows.Count; i++) { CheckBox chk = (CheckBox)GridView1.Rows[i].Cells[0].FindControl("CheckBox1"); if (chk != null && chk.Checked) { check =check +“,” + GridView1.Rows[i].Cells[2].Text.ToString();//获取名称列 tmp++; } 这样你的列的名称全部得到了,并且是这样的格式 check = "列1,列2,列3,列4" 注意有个逗号,这个逗号你可以随便改 然后传递到其他页面 Response.Redirect("PurchaseRequisitionEdit.aspx?para="+ check); 然后在PurchaseRequisitionEdit.aspx接收para List<string> check = Request["para"].split(',').ToList(); 这就是一个数组,里面就是你上个页面里点击的所有CheckBox 对于的列名称 我随手写的,可能有些错,你自己改一下
我改好了,请问然后list里面的东西要怎么分别取出来呢[/quote] List<string> check = Request["para"].split(',').ToList(); foreach(string tmp in check ) { // tmp 就是每一个check值 }[/quote] 我又改成这样还是有问题: Operation operation = new Operation(); protected void Page_Load(object sender, EventArgs e) { if(!IsPostBack) { GridViewBind(); } } private void GridViewBind() { DataSet ds = null; List<string> check = Request["para"].Split(',').ToList(); foreach (string tmp in check) { ds= operation.FindRequestById(tmp); } GridView1.DataSource = ds; GridView1.DataBind(); } 这样的话,我多选以后显示出来的东西还是只有后点击的那一个的全部数据
大然然 2017-03-08
  • 打赏
  • 举报
回复
引用 11 楼 qq_35468565 的回复:
[quote=引用 10 楼 qq_25095899 的回复:] [quote=引用 9 楼 qq_35468565 的回复:] [quote=引用 1 楼 qq_25095899 的回复:] string check = ""; int tmp = 0; for (int i = 0; i < this.GridView1.Rows.Count; i++) { CheckBox chk = (CheckBox)GridView1.Rows[i].Cells[0].FindControl("CheckBox1"); if (chk != null && chk.Checked) { check =check +“,” + GridView1.Rows[i].Cells[2].Text.ToString();//获取名称列 tmp++; } 这样你的列的名称全部得到了,并且是这样的格式 check = "列1,列2,列3,列4" 注意有个逗号,这个逗号你可以随便改 然后传递到其他页面 Response.Redirect("PurchaseRequisitionEdit.aspx?para="+ check); 然后在PurchaseRequisitionEdit.aspx接收para List<string> check = Request["para"].split(',').ToList(); 这就是一个数组,里面就是你上个页面里点击的所有CheckBox 对于的列名称 我随手写的,可能有些错,你自己改一下
我改好了,请问然后list里面的东西要怎么分别取出来呢[/quote] List<string> check = Request["para"].split(',').ToList(); foreach(string tmp in check ) { // tmp 就是每一个check值 }[/quote] 我在接收页面这么写的: Operation operation = new Operation(); protected void Page_Load(object sender, EventArgs e) { if(!IsPostBack) { List<string> check = Request["para"].Split(',').ToList(); foreach (string tmp in check) { operation.FindRequestByName(); } GridViewBind(); } } private void GridViewBind() { DataSet ds = null; ds = operation.FindRequestByName(); GridView1.DataSource = ds; GridView1.DataBind(); } Operation类里面写的FindRequestByName()方法用来根据name获取其他信息,但是好像dataset里面写的不对,没有东西出来,最后麻烦你一下看看这里是怎么回事哈。[/quote] ds = operation.FindRequestByName(); 根据name获取其他信息 肯定有问题啊,你传递过去的是一个数组,是多个值, 然后你FindRequestByName(); 参数又是一个值,一个name,你是不是想循环??,把所有的name传递进去FindRequestByName(); 然后查找?? 那你要给我看看FindRequestByName()里的代码
qq_35468565 2017-03-08
  • 打赏
  • 举报
回复
引用 10 楼 qq_25095899 的回复:
[quote=引用 9 楼 qq_35468565 的回复:] [quote=引用 1 楼 qq_25095899 的回复:] string check = ""; int tmp = 0; for (int i = 0; i < this.GridView1.Rows.Count; i++) { CheckBox chk = (CheckBox)GridView1.Rows[i].Cells[0].FindControl("CheckBox1"); if (chk != null && chk.Checked) { check =check +“,” + GridView1.Rows[i].Cells[2].Text.ToString();//获取名称列 tmp++; } 这样你的列的名称全部得到了,并且是这样的格式 check = "列1,列2,列3,列4" 注意有个逗号,这个逗号你可以随便改 然后传递到其他页面 Response.Redirect("PurchaseRequisitionEdit.aspx?para="+ check); 然后在PurchaseRequisitionEdit.aspx接收para List<string> check = Request["para"].split(',').ToList(); 这就是一个数组,里面就是你上个页面里点击的所有CheckBox 对于的列名称 我随手写的,可能有些错,你自己改一下
我改好了,请问然后list里面的东西要怎么分别取出来呢[/quote] List<string> check = Request["para"].split(',').ToList(); foreach(string tmp in check ) { // tmp 就是每一个check值 }[/quote] 我在接收页面这么写的: Operation operation = new Operation(); protected void Page_Load(object sender, EventArgs e) { if(!IsPostBack) { List<string> check = Request["para"].Split(',').ToList(); foreach (string tmp in check) { operation.FindRequestByName(); } GridViewBind(); } } private void GridViewBind() { DataSet ds = null; ds = operation.FindRequestByName(); GridView1.DataSource = ds; GridView1.DataBind(); } Operation类里面写的FindRequestByName()方法用来根据name获取其他信息,但是好像dataset里面写的不对,没有东西出来,最后麻烦你一下看看这里是怎么回事哈。
大然然 2017-03-08
  • 打赏
  • 举报
回复
引用 9 楼 qq_35468565 的回复:
[quote=引用 1 楼 qq_25095899 的回复:] string check = ""; int tmp = 0; for (int i = 0; i < this.GridView1.Rows.Count; i++) { CheckBox chk = (CheckBox)GridView1.Rows[i].Cells[0].FindControl("CheckBox1"); if (chk != null && chk.Checked) { check =check +“,” + GridView1.Rows[i].Cells[2].Text.ToString();//获取名称列 tmp++; } 这样你的列的名称全部得到了,并且是这样的格式 check = "列1,列2,列3,列4" 注意有个逗号,这个逗号你可以随便改 然后传递到其他页面 Response.Redirect("PurchaseRequisitionEdit.aspx?para="+ check); 然后在PurchaseRequisitionEdit.aspx接收para List<string> check = Request["para"].split(',').ToList(); 这就是一个数组,里面就是你上个页面里点击的所有CheckBox 对于的列名称 我随手写的,可能有些错,你自己改一下
我改好了,请问然后list里面的东西要怎么分别取出来呢[/quote] List<string> check = Request["para"].split(',').ToList(); foreach(string tmp in check ) { // tmp 就是每一个check值 }
qq_35468565 2017-03-07
  • 打赏
  • 举报
回复
引用 1 楼 qq_25095899 的回复:
string check = ""; int tmp = 0; for (int i = 0; i < this.GridView1.Rows.Count; i++) { CheckBox chk = (CheckBox)GridView1.Rows[i].Cells[0].FindControl("CheckBox1"); if (chk != null && chk.Checked) { check =check +“,” + GridView1.Rows[i].Cells[2].Text.ToString();//获取名称列 tmp++; } 这样你的列的名称全部得到了,并且是这样的格式 check = "列1,列2,列3,列4" 注意有个逗号,这个逗号你可以随便改 然后传递到其他页面 Response.Redirect("PurchaseRequisitionEdit.aspx?para="+ check); 然后在PurchaseRequisitionEdit.aspx接收para List<string> check = Request["para"].split(',').ToList(); 这就是一个数组,里面就是你上个页面里点击的所有CheckBox 对于的列名称 我随手写的,可能有些错,你自己改一下
我改好了,请问然后list里面的东西要怎么分别取出来呢
XBodhi. 2017-03-07
  • 打赏
  • 举报
回复
引用 5 楼 qq_35468565 的回复:
[quote=引用 4 楼 qiaohuyue 的回复:] 地址栏传递 ID。
很多ID怎么传递呢[/quote] base64 一下,你能选择多少,如果非常多的话,那就 POST 的方式吧。
  • 打赏
  • 举报
回复
你学习的内容贴出来,说出是哪一本教程上的,看看你的教程是否正规。这样再学。
  • 打赏
  • 举报
回复
买一本正规的 asp.net 教程学习。百度怎么能给你省买资料的钱呢?
qq_35468565 2017-03-07
  • 打赏
  • 举报
回复
引用 4 楼 qiaohuyue 的回复:
地址栏传递 ID。
很多ID怎么传递呢
XBodhi. 2017-03-07
  • 打赏
  • 举报
回复
地址栏传递 ID。
qq_35468565 2017-03-07
  • 打赏
  • 举报
回复
引用 1 楼 qq_25095899 的回复:
string check = ""; int tmp = 0; for (int i = 0; i < this.GridView1.Rows.Count; i++) { CheckBox chk = (CheckBox)GridView1.Rows[i].Cells[0].FindControl("CheckBox1"); if (chk != null && chk.Checked) { check =check +“,” + GridView1.Rows[i].Cells[2].Text.ToString();//获取名称列 tmp++; } 这样你的列的名称全部得到了,并且是这样的格式 check = "列1,列2,列3,列4" 注意有个逗号,这个逗号你可以随便改 然后传递到其他页面 Response.Redirect("PurchaseRequisitionEdit.aspx?para="+ check); 然后在PurchaseRequisitionEdit.aspx接收para List<string> check = Request["para"].split(',').ToList(); 这就是一个数组,里面就是你上个页面里点击的所有CheckBox 对于的列名称 我随手写的,可能有些错,你自己改一下
谢谢我先试试
加载更多回复(2)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧