【Asp.Net】DataGrid里实现多选提交的方法

思路:在DataGrid里建模板列,使用CheckBox和CheckBoxList控件提交,CheckBox控件用作全选,CheckBoxList控件记录商品的编号,用循环收集提交的编号。

1、在DataGrid里建立一个模板列,打开模板,在Header里放一个CheckBox控件,改名为:SelAll。在Item里放一个CheckBoxList控件,改名为:SelNum

2、将SelAll控件的AutoPostBack属性设置为true

3、绑定商品的ID到CheckBoxList控件,在DataGrid的ItemDataBound事件中加入:

None.gif if  ( e.Item.ItemType  ==  ListItemType.Item  ||  e.Item.ItemType  ==  ListItemType.AlternatingItem )
ExpandedBlockStart.gifContractedBlock.gif            
dot.gif {
InBlock.gif                
InBlock.gif                CheckBoxList chklist 
= (CheckBoxList)e.Item.Cells[1].FindControl("SelNum");
InBlock.gif                
InBlock.gif                chklist.Items[
0].Text = "";
InBlock.gif                chklist.Items[
0].Value = Convert.ToString( DataBinder.Eval(e.Item.DataItem, "DetailID") );
InBlock.gif
InBlock.gif                
ExpandedBlockEnd.gif            }

我们只需要CheckBoxList控件的一个组件

4、在DataGrid的ItemCreated事件里创建SelAll的CheckedChanged事件:

None.gif if ( e.Item.ItemType  ==  ListItemType.Header )
ExpandedBlockStart.gifContractedBlock.gif            
dot.gif {
InBlock.gif                CheckBox selall 
= (CheckBox)e.Item.FindControl("SelAll");
InBlock.gif
InBlock.gif                selall.CheckedChanged 
+=new EventHandler(selall_CheckedChanged);
ExpandedBlockEnd.gif            }

加入SelAll的CheckedChanged事件的方法:

 1 None.gif protected   void  selall_CheckedChanged( object  sender, System.EventArgs e) 
 2 ExpandedBlockStart.gifContractedBlock.gif         dot.gif {
 3InBlock.gif
 4InBlock.gif            CheckBox chk = this.GetHeaderCheckBox(this.DataGrid1);
 5InBlock.gif
 6InBlock.gif            foreach ( DataGridItem i in this.DataGrid1.Items )
 7ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
 8InBlock.gif
 9InBlock.gif                CheckBoxList inChk = (CheckBoxList)i.FindControl("SelNum");
10InBlock.gif
11InBlock.gif                if ( i.Cells[0].Enabled == true )
12InBlock.gif                    inChk.Items[0].Selected = chk.Checked;
13InBlock.gif
14ExpandedSubBlockEnd.gif            }

15InBlock.gif
16ExpandedBlockEnd.gif        }

行4用到方法GetHeaderCheckBox,作用是用来确定选定状态的。

None.gif private  CheckBox GetHeaderCheckBox(DataGrid dg)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif
InBlock.gif            CheckBox chk 
= null;
InBlock.gif
InBlock.gif            
foreach ( DataGridItem i in dg.Controls[0].Controls )
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif
InBlock.gif                
if(i.ItemType == ListItemType.Header)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif
InBlock.gif                    chk 
= (CheckBox)i.FindControl("SelAll");
InBlock.gif
InBlock.gif                    
break;
InBlock.gif
ExpandedSubBlockEnd.gif                }

InBlock.gif
ExpandedSubBlockEnd.gif            }

InBlock.gif
InBlock.gif            
return chk;
InBlock.gif
ExpandedBlockEnd.gif        }

5、最后我们通过一个单击按钮来得到我们需要的ID值。在按钮的Click事件中加入:

None.gif for  (  int  i = 0 ; i < this .DataGrid1.Items.Count; i ++  )
ExpandedBlockStart.gifContractedBlock.gif            
dot.gif {
InBlock.gif                CheckBoxList chklist 
= (CheckBoxList)this.DataGrid1.Items[i].Cells[1].FindControl("SelNum");
InBlock.gif
InBlock.gif                
if ( chklist.Items[0].Selected )
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif{                
InBlock.gif    Response.Write( chklist.Items[
0].Value );
InBlock.gif    Response.Write( 
"<br>" );
ExpandedSubBlockEnd.gif}

ExpandedBlockEnd.gif            }

转载于:https://www.cnblogs.com/murky/archive/2006/07/06/443819.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值