首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

为什么小弟我的DataGrid的EditCommand方法不能编辑

2012-02-06 
为什么我的DataGrid的EditCommand方法不能编辑我在一个webform窗体上放了一个datagrid控件,连上了数据库,

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

热点排行