DataGrid:为什么UPDATE里的数据不是更新以后的?
我用Datagrid中的UPDATE一头的包,望各位大虾指点。源程序如下:
Private Sub DataGrid1_UpdateCommand(ByVal sender As System.Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.UpdateCommand
Dim ds As New DataSet()
SqlDataAdapter1.Fill(ds, "addressbook")
Dim Ext As TextBox = CType(e.Item.Cells(1).Controls(0), TextBox)
Dim Mophone As TextBox = CType(e.Item.Cells(2).Controls(0), TextBox)
Dim IPAdd As TextBox = CType(e.Item.Cells(3).Controls(0), TextBox)
Dim Faphone As TextBox = CType(e.Item.Cells(4).Controls(0),TextBox)
Dim r As System.Data.DataRow = ds.Tables("addressbook").Rows(e.Item.ItemIndex)
r("Mobilephone") = Mophone.Text
r("Ext") = Ext.Text
r("FamilyPhone") = Faphone.Text
r("IPAddress") = IPAdd.Text
SqlDataAdapter1.Update(ds)
DataGrid1.EditItemIndex = -1
DataGrid1.DataBind()
End Sub
为什么我在文本框中输入了新数字以后却得不到新的结果?我用Response.write跟踪了一下,发现Mophone.Text、Faphone.Text等得到的都是更改前的值。这是为什么?
问题点数:80、回复次数:9Top
1 楼peter123()回复于 2002-04-19 17:16:58 得分 0
关注!我遇到同样的问题!Top
2 楼icyer()回复于 2002-04-19 17:17:01 得分 20
在SqlDataAdapter1.Update(ds)之前加上:
ds.Tables("addressbook").Rows.Add(r);
Top
3 楼deray(常青藤)回复于 2002-04-19 17:23:06 得分 0
加上了以后出错:
异常信息: System.ArgumentException: 该行已经属于此表。Top
4 楼jackyhx(飞不动的侠)回复于 2002-04-19 17:26:27 得分 60
你这是要更新记录还是添加新纪录阿?
把Dim ds As New DataSet()防到所有函数前面
SqlDataAdapter1.Fill(ds, "addressbook")
放到Page_Load()
里面去。Top
5 楼jackyhx(飞不动的侠)回复于 2002-04-19 17:31:26 得分 0
在Update_Command执行之后你又生成了一个新的Ds
而且没有邦定!!就取值当然不行。
Dim ds As New DataSet()
Page_OnLoad()
{
SqlDataAdapter1.Fill(ds, "addressbook")
}
System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.UpdateCommand
{
Dim Ext As TextBox = CType(e.Item.Cells(1).Controls(0), TextBox)
Dim Mophone As TextBox = CType(e.Item.Cells(2).Controls(0), TextBox)
Dim IPAdd As TextBox = CType(e.Item.Cells(3).Controls(0), TextBox)
Dim Faphone As TextBox = CType(e.Item.Cells(4).Controls(0),TextBox)
Dim r As System.Data.DataRow = ds.Tables("addressbook").Rows(e.Item.DataSetIndex)注意这里!!!***
r("Mobilephone") = Mophone.Text
r("Ext") = Ext.Text
r("FamilyPhone") = Faphone.Text
r("IPAddress") = IPAdd.Text
SqlDataAdapter1.Update(ds)
DataGrid1.EditItemIndex = -1
DataGrid1.DataBind()
End Sub
Top
6 楼houbinbin()回复于 2002-04-19 17:34:28 得分 0
在绑定之前,关闭数据连接,然后再重新打开建立数据连接,Top
7 楼mbm(沉默是金)回复于 2002-04-19 17:35:19 得分 0
如果你没有具体定义update语句,请添加sqlcommandbuilder对象Top
8 楼deray(常青藤)回复于 2002-04-19 17:35:21 得分 0
当然是更新记录啊ds.Tables("addressbook").Rows(e.Item.ItemIndex)不是取修改行吗?Top
9 楼deray(常青藤)回复于 2002-04-19 18:15:37 得分 0
谢谢各位大虾,问题解决了,原来是忘了在Page-load里写上if not page.ispostback ,数据始终绑定在原来的ds里,现在可以更新了!Top




