天堂落日 发表于 2008-6-8 12:07

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

如题:
    调用NotrhWind数据库,并将数据绑定至GridView1中,并添加了修改功能,其他功能都没问题,现在遇到的问题是点击更新之后无法获取GridView1中修改后的数据(得到的都是旧的数据),哪位朋友知道的帮忙解决一下
    下边是我写的获取新内容的代码:
[code] 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);
    }[/code]

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

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

multiple19O2 发表于 2008-6-8 19:43

抱歉 想帮你的,但是这堂课我没听讲……

hebingbing 发表于 2008-6-9 09:46

updateCustomers(strCus, strCompanyName, strContractName, strAddress);
这个方法不贴出来看不出来有什么名堂……

青格儿 发表于 2008-6-10 13:21

得到的都是旧的数据?如果数据库变了,那怎么会是旧数据啊?没更新成功吧?不太明白怎么得到的都是旧数据?

snipen 发表于 2008-6-10 13:30

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

天堂落日 发表于 2008-6-11 16:24

回复 3# hebingbing 的帖子

[code]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();
    }[/code]
我说的无法获取新数据是指在上边的GridView1_RowUpdating函数种,字符串型变量strCompanyName赋值问题,没有获取修改后的GridView值
如果把GridView1_RowUpdating函数当中的赋值语句换成直接赋值,譬如说string strCompanyName ="aaa";这样的语句就可以正常修改数据库,我调试了一下,问题就处在赋值语句那里,不知道怎么获取

hebingbing 发表于 2008-6-11 17:03

那你把你的public void updateCustomers(string strCus, string strCompanyName, string strContractName, string strAddress)
方法先改成输出那几个变量看看你获取的是什么值……
还有就是如果你的GridView1是在page_load事件中绑定的话,确保加了ispostback的判断……

冰彩虹 发表于 2008-6-11 21:38

把你Page_Load事件里的代码贴出来看看,问题肯定出在那里

天堂落日 发表于 2008-6-18 10:17

[quote][bo][un]snipen[/un] 在 2008-6-10 13:30 的发言:[/bo]

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

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

页: [1]

编程论坛