【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事件中加入:
if ( e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem )
{
CheckBoxList chklist = (CheckBoxList)e.Item.Cells[1].FindControl("SelNum");
chklist.Items[0].Text = "";
chklist.Items[0].Value = Convert.ToString( DataBinder.Eval(e.Item.DataItem, "DetailID") );
![](/Images/OutliningIndicators/InBlock.gif)
}
我们只需要CheckBoxList控件的一个组件
4、在DataGrid的ItemCreated事件里创建SelAll的CheckedChanged事件:
if( e.Item.ItemType == ListItemType.Header )
{
CheckBox selall = (CheckBox)e.Item.FindControl("SelAll");
![](/Images/OutliningIndicators/InBlock.gif)
selall.CheckedChanged +=new EventHandler(selall_CheckedChanged);
}
加入SelAll的CheckedChanged事件的方法:
行4用到方法GetHeaderCheckBox,作用是用来确定选定状态的。
private CheckBox GetHeaderCheckBox(DataGrid dg)
{
![](/Images/OutliningIndicators/InBlock.gif)
CheckBox chk = null;
![](/Images/OutliningIndicators/InBlock.gif)
foreach ( DataGridItem i in dg.Controls[0].Controls )
{
![](/Images/OutliningIndicators/InBlock.gif)
if(i.ItemType == ListItemType.Header)
{
![](/Images/OutliningIndicators/InBlock.gif)
chk = (CheckBox)i.FindControl("SelAll");
![](/Images/OutliningIndicators/InBlock.gif)
break;
![](/Images/OutliningIndicators/InBlock.gif)
}
![](/Images/OutliningIndicators/InBlock.gif)
}
![](/Images/OutliningIndicators/InBlock.gif)
return chk;
![](/Images/OutliningIndicators/InBlock.gif)
}
5、最后我们通过一个单击按钮来得到我们需要的ID值。在按钮的Click事件中加入:
for ( int i=0; i<this.DataGrid1.Items.Count; i++ )
{
CheckBoxList chklist = (CheckBoxList)this.DataGrid1.Items[i].Cells[1].FindControl("SelNum");
![](/Images/OutliningIndicators/InBlock.gif)
if ( chklist.Items[0].Selected )
{
Response.Write( chklist.Items[0].Value );
Response.Write( "<br>" );
}
}
1、在DataGrid里建立一个模板列,打开模板,在Header里放一个CheckBox控件,改名为:SelAll。在Item里放一个CheckBoxList控件,改名为:SelNum
2、将SelAll控件的AutoPostBack属性设置为true
3、绑定商品的ID到CheckBoxList控件,在DataGrid的ItemDataBound事件中加入:
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
我们只需要CheckBoxList控件的一个组件
4、在DataGrid的ItemCreated事件里创建SelAll的CheckedChanged事件:
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
加入SelAll的CheckedChanged事件的方法:
1
protected void selall_CheckedChanged(object sender, System.EventArgs e)
2
{
3![](/Images/OutliningIndicators/InBlock.gif)
4
CheckBox chk = this.GetHeaderCheckBox(this.DataGrid1);
5![](/Images/OutliningIndicators/InBlock.gif)
6
foreach ( DataGridItem i in this.DataGrid1.Items )
7
{
8![](/Images/OutliningIndicators/InBlock.gif)
9
CheckBoxList inChk = (CheckBoxList)i.FindControl("SelNum");
10![](/Images/OutliningIndicators/InBlock.gif)
11
if ( i.Cells[0].Enabled == true )
12
inChk.Items[0].Selected = chk.Checked;
13![](/Images/OutliningIndicators/InBlock.gif)
14
}
15![](/Images/OutliningIndicators/InBlock.gif)
16
}
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
3
![](/Images/OutliningIndicators/InBlock.gif)
4
![](/Images/OutliningIndicators/InBlock.gif)
5
![](/Images/OutliningIndicators/InBlock.gif)
6
![](/Images/OutliningIndicators/InBlock.gif)
7
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
8
![](/Images/OutliningIndicators/InBlock.gif)
9
![](/Images/OutliningIndicators/InBlock.gif)
10
![](/Images/OutliningIndicators/InBlock.gif)
11
![](/Images/OutliningIndicators/InBlock.gif)
12
![](/Images/OutliningIndicators/InBlock.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
行4用到方法GetHeaderCheckBox,作用是用来确定选定状态的。
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
5、最后我们通过一个单击按钮来得到我们需要的ID值。在按钮的Click事件中加入:
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)