读书人

为什么小弟我的DataGrid的EditCommand

发布时间: 2012-02-06 15:52:44 作者: rapoo

为什么我的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];第一个单元格的第一个控件

读书人网 >asp.net

热点推荐