为什么我的DataGrid的EditCommand方法不能编辑
我在一个webform窗体上放了一个datagrid控件,连上了数据库,放了一个编辑(更新,取消)按钮,然后在它的private void fixitemDBgrid_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)方法中写代码,可是总是提示超出范围,我的代码是这样的:
fixitemDBgrid.EditItemIndex = e.Item.ItemIndex;
TextBox tbfixcode = (TextBox)fixitemDBgrid.Items[fixitemDBgrid.EditItemIndex].Cells[0].Controls[0];
我的意图是让这一列为可编辑象TextBox那样可以修改,但是现在出错如果把出错的这行去掉,可以编辑,但却是只读的.这是为什么
出错信息如下:
指定的参数已超出有效值的范围。参数名: index
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.ArgumentOutOfRangeException: 指定的参数已超出有效值的范围。参数名: index
源错误:
行 130: {
行 131: fixitemDBgrid.EditItemIndex = e.Item.ItemIndex;
行 132: TextBox tbfixcode = (TextBox)fixitemDBgrid.Items[fixitemDBgrid.EditItemIndex].Cells[0].Controls[0];
行 133:
行 134: //NewTextBoxN.NewTextBox Tbfixcode = (NewTextBoxN.NewTextBox )e.Item.Cells[0].Controls[0];
------解决方案--------------------TextBox tbfixcode = (TextBox)fixitemDBgrid.Items[fixitemDBgrid.EditItemIndex].Cells[0].Controls[0];
改成
TextBox tbfixcode=(TextBox)e.Item.FindControl( "你要找哪控件id ")
------解决方案--------------------在EditCommand事件中这样写就行了
private void fixitemDBgrid_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
fixitemDBgrid.EditItemIndex = e.Item.ItemIndex;
//重新绑定数据
}
我的意图是让这一列为可编辑象TextBox那样可以修改,但是现在出错如果把出错的这行去掉,可以编辑,但却是只读的.
====================
看看你是不是在aspx文件中让它readonly = true了,还有,如果要进行编辑,是在UpdateCommand和DeleteCommand中写事件处理程序
------解决方案--------------------TextBox tbfixcode = (TextBox)e.Items[fixitemDBgrid.EditItemIndex].Cells[0].Controls[0];
==========================
TextBox tbfixcode = (TextBox)e.Item.Cells[0].Controls[0];
Cells[0].Controls[0];第一个单元格的第一个控件