当前位置: 代码迷 >> ASP.NET >> 关于gridview的编辑列有关问题, 答对狂给100大分
  详细解决方案

关于gridview的编辑列有关问题, 答对狂给100大分

热度:10083   发布时间:2013-02-25 00:00:00.0
关于gridview的编辑列问题,急!!!!!!!!!!! 答对狂给100大分
我在服务器端写的数据显示和 "编辑 "按扭的代码,但是我在点击编辑后,修改            
     
TextBox框的值,然后点击更新。可是得到的不是修改以后的值,而是没有修            
     
改以前的值。我调试了一下,发现进入到了RowUpdating事件里了,但是用                    
     
String         tb=((TextBox)gv.Rows[e.RowIndex].Cells[2].Controls[0]).Text            
     
得到的值是没有修改以前的。请教了二十几个群,和十几个论坛,就是没有            
     
人知道。在线急等。

------解决方案--------------------------------------------------------
试试这个

String tb = ((TextBox)gv.Rows[e.EditIndex].Cells[2].Controls[0]).Text ;
------解决方案--------------------------------------------------------
GridViewUpdateEventArgs.NewValues
------解决方案--------------------------------------------------------
Keys字典中一般存放的是数据源中的主键字段的key和value的对应值,如果主键由多个字段组成,那么Keys为每个键字段添加其字段名称和值。OldValues中存放的是要更新的行的字段名和原始值,每个字段为其中的一项。NewValues中存放的是要更新的行的字段名和修改后的值,每个字段为其中的一项。注意,主键字段只存放于keys集合中。

这三个集合中的每一项都是DictionaryEntry类型的对象,我们可以用DictionaryEntry.Key来确定一个项的字段名称,用DictionaryEntry.Value来确定某项的值。


http://goforideal.bokee.com/viewdiary.14490513
------解决方案--------------------------------------------------------
page-load中是否加入了ispostback?
------解决方案--------------------------------------------------------
楼上正解,LZ没有做ispostback判断就在page_load事件对gridview进行了绑定
------解决方案--------------------------------------------------------
是啊,要加ispostback,或者还要重新DataBind一下
------解决方案--------------------------------------------------------
同一问题怎么问两遍?

LZ 有空看看下贴的回复!
http://community.csdn.net/Expert/topic/5547/5547135.xml?temp=.050152

另,LZ 把代码贴出来晒晒!看代码比较容易些!
------解决方案--------------------------------------------------------
数据绑定要放在
if(!IsPostBack)里面
要不然每次页面回送都会进行一次数据绑定,数据总是初始的
------解决方案--------------------------------------------------------
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{

BindRole();
}
}
private void BindRole()
{
DataTable dt = roleDB.GetAllRole();
gvRoles.DataSource = dt.DefaultView;
gvRoles.DataBind();

}
protected void gvRoles_RowEditing(object sender, GridViewEditEventArgs e)
{
gvRoles.EditIndex = e.NewEditIndex;
BindRole();

}
protected void gvRoles_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
gvRoles.EditIndex = -1;
BindRole();
}
protected void gvRoles_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridViewRow gvrRoles = gvRoles.Rows[gvRoles.EditIndex];
int iRoleID = int.Parse(gvRoles.DataKeys[gvRoles.EditIndex].Value.ToString());
string strRoleName = ((TextBox)gvrRoles.FindControl( "txtRoleName ")).Text.Trim();
string strRoleDes = ((TextBox)gvrRoles.FindControl( "txtDes ")).Text.Trim();
int iFlag = 0;
CheckBox chkFlagNew = (CheckBox)gvrRoles.FindControl( "chkEFalg ");
if (chkFlagNew.Checked == true)
iFlag = 1;
bool bFlag = roleDB.UpDateRole(strRoleName, strRoleDes, iFlag,iRoleID);