如何在点击更新按钮时把想要的行的值保存到一个变量里?private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{ DataGrid1.EditItemIndex=e.Item.ItemIndex;
tempetname=((TextBox)e.Item.Cells[2].Controls[0]).Text;
tempetage=((TextBox)e.Item.Cells[4].Controls[0]).Text;
tempettype=((TextBox)e.Item.Cells[2].Controls[0]).Text;
}为什么说
指定的参数超出范围呢?
参数名:index
{ DataGrid1.EditItemIndex=e.Item.ItemIndex;
tempetname=((TextBox)e.Item.Cells[2].Controls[0]).Text;
tempetage=((TextBox)e.Item.Cells[4].Controls[0]).Text;
tempettype=((TextBox)e.Item.Cells[2].Controls[0]).Text;
}为什么说
指定的参数超出范围呢?
参数名:index
e.Item.Cells[3].Controls[0]).Text;
也有可能Cells中就没有控件,使用Controls[0]无效。
tempetage=((TextBox)e.Item.Cells[4].Controls[0]).Text;
tempettype=((TextBox)e.Item.Cells[2].Controls[0]).Text;这里不对了
tempetname=((TextBox)e.Item.Cells[1].Controls[0]).Text;
tempetage=((TextBox)e.Item.Cells[2].Controls[0]).Text;
tempettype=((TextBox)e.Item.Cells[3].Controls[0]).Text;
无法将类型为“System.Web.UI.WebControls.Button”的对象强制转换为类型
“System.Web.UI.WebControls.TextBox”。
我的 DataGrid 里 第一列是删除按钮,第二列是编辑按钮。第三列开始是数据。
===================================
这句话你刚才可没说...其实索引越界的很大可能性是因为单元格的下标或控件位置有误如果你用的是模版列,那么用FindControl去找控件应该是不会错的,否则要贴你的aspx文件,看看究竟是什么位置
datagrid.rows[e.index]cell[0~n].value
datagrid.rows[e.index]cell[0~n].value
我是.net 1.1 的 datagrid1. 好像没ROWS 这个出来。。 ================================
如果你用的是模版列,那么用FindControl去找控件应该是不会错的,否则要贴你的aspx文件,看看究竟是什么位置唉。。作业来的。。 你肯帮我看源码。我全发你是了。。留下邮箱。 不过是2003 .net 1.1的
FindControl 这函数也不知哪里来。。
可能我的表达能力问题吧。。 唉。想的功能可能看了是很简单的。。 至少在WINFORM里。。
改成
tempetage=((TextBox)e.Item.Cells[4].Controls[1]).Text;
试试
改成
tempetage=((TextBox)e.Item.Cells[4].Controls[1]).Text;
试试同样说是超出的。。我看主要是 DataGrid1_EditCommand 要在这个事件里面取值的问题
别想那么复杂可能我还没说清楚我想要的功能
就是在UpdateCommand 事件 去更新数据到数据库
string updatestr="";
updatestr+="pettype='"+((TextBox)e.Item.Cells[2].Controls[0]).Text+"'";
updatestr+=",petname='"+((TextBox)e.Item.Cells[3].Controls[0]).Text+"'";
updatestr+=",petage='"+((TextBox)e.Item.Cells[4].Controls[0]).Text+"'";
提交一个SQL语句
update petinformation set "+updatestr+"where petname='"+tempetname+"' and petage='"+tempetage+"'";其中 tempetname 和tempetage 要要回原来的值才可以在数据库中查询到那条记录啊。
((TextBox)e.Item.Cells[2].Controls[0]).Text 这个已经是在 DataGrid1 控件上的新值了。所以不可能
update petinformation set "+updatestr+"where petname='"+((TextBox)e.Item.Cells[2].Controls[0]).Text +"'"……那样去找啊