注册 登录
编程论坛 ASP.NET技术论坛

【已解决】GridView中如何获取修改后的某个单元格的值

天堂落日 发布于 2008-06-08 12:07, 7875 次点击
如题:
    调用NotrhWind数据库,并将数据绑定至GridView1中,并添加了修改功能,其他功能都没问题,现在遇到的问题是点击更新之后无法获取GridView1中修改后的数据(得到的都是旧的数据),哪位朋友知道的帮忙解决一下
    下边是我写的获取新内容的代码:
程序代码:
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        string strCus = this.GridView1.DataKeys[e.RowIndex][0].ToString();
        string strCompanyName = ((TextBox)this.GridView1.Rows[e.RowIndex].Cells[0].Controls[0]).Text.ToString();
        string strContractName = ((TextBox)this.GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text.ToString();
        string strAddress = ((TextBox)this.GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text.ToString();
        updateCustomers(strCus, strCompanyName, strContractName, strAddress);
    }


[[it] 本帖最后由 天堂落日 于 2008-6-8 12:11 编辑 [/it]]

[[it] 本帖最后由 天堂落日 于 2008-6-18 10:18 编辑 [/it]]
8 回复
#2
multiple19O22008-06-08 19:43
抱歉 想帮你的,但是这堂课我没听讲……
#3
hebingbing2008-06-09 09:46
updateCustomers(strCus, strCompanyName, strContractName, strAddress);
这个方法不贴出来看不出来有什么名堂……
#4
青格儿2008-06-10 13:21
得到的都是旧的数据?如果数据库变了,那怎么会是旧数据啊?没更新成功吧?不太明白怎么得到的都是旧数据?
#5
snipen2008-06-10 13:30
在Page_Load 事件中添加 if(!Page.IsPostBack){}
#6
天堂落日2008-06-11 16:24
回复 3# hebingbing 的帖子
程序代码:
public void updateCustomers(string strCus, string strCompanyName, string strContractName, string strAddress)
    {
        SqlConnection con = new SqlConnection(strCon);
        SqlCommand cmd = new SqlCommand("update Customers set CompanyName='" + strCompanyName + "', ContactName='" + strContractName + "' ,Address='" + strAddress + "' where CustomerID='" + strCus + "'", con);
        con.Open();
        int intResult=cmd.ExecuteNonQuery();
        con.Close();
        gridviewBind();
    }

我说的无法获取新数据是指在上边的GridView1_RowUpdating函数种,字符串型变量strCompanyName赋值问题,没有获取修改后的GridView值
如果把GridView1_RowUpdating函数当中的赋值语句换成直接赋值,譬如说string strCompanyName ="aaa";这样的语句就可以正常修改数据库,我调试了一下,问题就处在赋值语句那里,不知道怎么获取
#7
hebingbing2008-06-11 17:03
那你把你的public void updateCustomers(string strCus, string strCompanyName, string strContractName, string strAddress)
方法先改成输出那几个变量看看你获取的是什么值……
还有就是如果你的GridView1是在page_load事件中绑定的话,确保加了ispostback的判断……
#8
冰彩虹2008-06-11 21:38
把你Page_Load事件里的代码贴出来看看,问题肯定出在那里
#9
天堂落日2008-06-18 10:17
[bo][un]snipen[/un] 在 2008-6-10 13:30 的发言:[/bo]

在Page_Load 事件中添加 if(!Page.IsPostBack){}


确实是忘记添加IsPostBack判断,呵呵
添加之后就OK了,问题已解决,谢谢各位
1