呵呵,你看看下面我写的这个文章吧,应该和你所说的问题差不多,改一改就可以了
二、 让初学者为难的另一个问题就是DataList或DataGid内部绑定控件的事件处理问题 如果这里的服务器控件是页面上普通的控件的话,那很好办,在其属性窗口事件栏里对要进行绑定的事件双击就可以了。而对于DataList等控件里面的服务器却没有事件栏这一个选项。因而就有好多人就不知道怎么办了,而实际上很多人都需要这样的功能。根据我给一个朋友解决的过程来讲一下,我的朋友他对dataGrid里的每一条记录都要审核处理,因而他在每条记录里都放了一个checkbox(绑定是否已经被审核处理过),并且想要只要一点未选中的checkbox就能更新数据库。分析其过程,在他选中checkbox的时候就要去更新数据库,因而此时checkbox必须要执行回传;而且在回传时只有checkbox执行了动作并改变了状态,因而事件的触发、数据的更新也必须由它来完成,固它必须要有事件处理程序。原理就是这样子的,下面就是解决方案: 
1. 设置相应checkbox的autopostback属性为true; 
2.在datagrid的itemcreated事件中添加其中的checkbox事件处理,如下 private void DataList1_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)  
{  
if(e.Item.ItemType == ListItemType.Item)  
{  
CheckBox chk = (CheckBox)e.Item.FindControl("CheckBox1");  // 给项上的CheckBox添加出发事件  chk.CheckedChanged +=new EventHandler(this.CheckBox1Change);  
} 
}  
3.在相应的事件处理方法中,如下:  
private void CheckBox1Change (object sender,EventArgs e)  
{  
CheckBox myCheckBox = (CheckBox)sender;  
int id;  
if(myCheckBox.Checked == true) //判断是不是审核通过 
{  
id=myCheckBox.Text//这里我让更新的ID (主键)绑定到了CheckBox1的Text属性上去了. 
                     据库处理;//省略  
}   
}  
当然这里你也可以不让CheckBox1的Text属性来绑定主键,比如你可能让其中的其它控件来绑定主键,这样可以通过下面来访问他们. 
TableCell myTableCell = (TableCell)(myCheckBox.Parent); //checkBox1的父容器,即所在行所在列的cell 
DataGridItem item = (DataGridItem)myTableCell.Parent; //就是DataGrid等的一个行了 
控件类型 my控件=item.FindControl(“yourcontolid”); 
然后获取相关数据库主键值,然后执行数据库更新操作. 这里这个例子有点特别,因为datagrid里面的事件直接进行了事件处理,如果只是对datagrid控件等里面控件的状态进行读取并做相应的数据库更新的话,就更简单了,比如先把所有要审核并通过而未审核的记录的checkbox选中,然后由外部的一个button来引发事件处理,这样过程就简单多了,不用动态加载事件了,现在要做的就只是对datagrid里面的checkbox进行扫描,然后根据其状态执行相应的数据库操作就可以了. 
比如下面的这段代码: 
private void Button1_Clicked(object sender, System.EventArgs e) 

foreach(ListItem li in DataGrid1) 

CheckBox mycb=( CheckBox)li.FindControl(“ChockBox1”); 
If(mycb.Checked==true) 

获取关键字,执行数据库更新操作,同上.