还有一个DATAGRID,绑定T002表的内容,参数为上面的第一个文本框的值:ID
现在的问题是:ID在数据库中是自动生成的,在给三个文本框新增时,UPDATE后,第一个文本框不显示ID值,因此DATAGRID绑定出问题,请问如何解决?新增之后必须显示当前页面。
7 个解决方案
#1
把你写的绑定的代码贴出来看看。
#2
Private Sub btsubmit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btsubmit.Click
Dim anyRow As DataRow = DataSet11.T005.NewRow
anyRow(1) = TextBox2.Text
anyRow(2) = TextBox3.Text
DataSet11.T005.Rows.Add(anyRow)
SqlDataAdapter1.Update(DataSet11, "t005")
TextBox1.DataBind()
TextBox2.DataBind()
TextBox3.DataBind()
If TextBox1.Text <> "" Then
SqlDataAdapter2.SelectCommand.Parameters("@clientid").Value = CInt(TextBox1.Text)
SqlDataAdapter2.Fill(DataSet11, "t006")
DataGrid1.DataBind()
End If
End Sub
现在的问题是新增之后跳到第一笔记录去了,而不是当前新增的记录,怎么解决?
Dim anyRow As DataRow = DataSet11.T005.NewRow
anyRow(1) = TextBox2.Text
anyRow(2) = TextBox3.Text
DataSet11.T005.Rows.Add(anyRow)
SqlDataAdapter1.Update(DataSet11, "t005")
TextBox1.DataBind()
TextBox2.DataBind()
TextBox3.DataBind()
If TextBox1.Text <> "" Then
SqlDataAdapter2.SelectCommand.Parameters("@clientid").Value = CInt(TextBox1.Text)
SqlDataAdapter2.Fill(DataSet11, "t006")
DataGrid1.DataBind()
End If
End Sub
现在的问题是新增之后跳到第一笔记录去了,而不是当前新增的记录,怎么解决?
#3
If TextBox1.Text <> "" Then
SqlDataAdapter2.SelectCommand.Parameters("@clientid").Value = CInt(TextBox1.Text)
SqlDataAdapter2.Fill(DataSet11, "t006")
DataGrid1.DataBind()
End If
是不是因为这个if的条件,在TextBox2和TextBox3填进新的值的时候,TextBox1还没有从数据库中取出新的值来。所以绑定的还是原来的值。
SqlDataAdapter2.SelectCommand.Parameters("@clientid").Value = CInt(TextBox1.Text)
SqlDataAdapter2.Fill(DataSet11, "t006")
DataGrid1.DataBind()
End If
是不是因为这个if的条件,在TextBox2和TextBox3填进新的值的时候,TextBox1还没有从数据库中取出新的值来。所以绑定的还是原来的值。
#4
不是,当初没有IF时,报错,因为TEXTBOX1.TEXT为空,所以就不知道为什么ID没有绑定上,怎么解决?
#5
应该这样,当你第一个datagrid newrow添加的时候id在数据库自动产生,但是你帮定的dataset显示的第一行没有拿到新的id值,因为这个时候的dataset是在内存中进行的而不是直接从数据库取出来的。
所以建议你用存储过程添加纪录,这样每增加一条记录返回一个新的id值,这样你的第二个DataGrid的榜定就不会有问题了
还有一种方法,就是你在Nowrow的时候就从数据库取出new Id值,然后一起update到数据库。这样第二层datagrid也不会出错。
所以建议你用存储过程添加纪录,这样每增加一条记录返回一个新的id值,这样你的第二个DataGrid的榜定就不会有问题了
还有一种方法,就是你在Nowrow的时候就从数据库取出new Id值,然后一起update到数据库。这样第二层datagrid也不会出错。
#6
用存储过程添加记录,能不能说具体一点。
第2种方法,怎样得到NEW ID ,多用户情况下?
第2种方法,怎样得到NEW ID ,多用户情况下?
#7
我用存储过程确实得到了新的ID,但是ID绑定了,其他文本框的值变不了,除非直接用把存储过程的参数赋给它们,这样却没绑定,也就是没刷新,因此本页的定位也没变(也就是本条记录在DATASET里的索引),其他操作也不对了。
#1
把你写的绑定的代码贴出来看看。
#2
Private Sub btsubmit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btsubmit.Click
Dim anyRow As DataRow = DataSet11.T005.NewRow
anyRow(1) = TextBox2.Text
anyRow(2) = TextBox3.Text
DataSet11.T005.Rows.Add(anyRow)
SqlDataAdapter1.Update(DataSet11, "t005")
TextBox1.DataBind()
TextBox2.DataBind()
TextBox3.DataBind()
If TextBox1.Text <> "" Then
SqlDataAdapter2.SelectCommand.Parameters("@clientid").Value = CInt(TextBox1.Text)
SqlDataAdapter2.Fill(DataSet11, "t006")
DataGrid1.DataBind()
End If
End Sub
现在的问题是新增之后跳到第一笔记录去了,而不是当前新增的记录,怎么解决?
Dim anyRow As DataRow = DataSet11.T005.NewRow
anyRow(1) = TextBox2.Text
anyRow(2) = TextBox3.Text
DataSet11.T005.Rows.Add(anyRow)
SqlDataAdapter1.Update(DataSet11, "t005")
TextBox1.DataBind()
TextBox2.DataBind()
TextBox3.DataBind()
If TextBox1.Text <> "" Then
SqlDataAdapter2.SelectCommand.Parameters("@clientid").Value = CInt(TextBox1.Text)
SqlDataAdapter2.Fill(DataSet11, "t006")
DataGrid1.DataBind()
End If
End Sub
现在的问题是新增之后跳到第一笔记录去了,而不是当前新增的记录,怎么解决?
#3
If TextBox1.Text <> "" Then
SqlDataAdapter2.SelectCommand.Parameters("@clientid").Value = CInt(TextBox1.Text)
SqlDataAdapter2.Fill(DataSet11, "t006")
DataGrid1.DataBind()
End If
是不是因为这个if的条件,在TextBox2和TextBox3填进新的值的时候,TextBox1还没有从数据库中取出新的值来。所以绑定的还是原来的值。
SqlDataAdapter2.SelectCommand.Parameters("@clientid").Value = CInt(TextBox1.Text)
SqlDataAdapter2.Fill(DataSet11, "t006")
DataGrid1.DataBind()
End If
是不是因为这个if的条件,在TextBox2和TextBox3填进新的值的时候,TextBox1还没有从数据库中取出新的值来。所以绑定的还是原来的值。
#4
不是,当初没有IF时,报错,因为TEXTBOX1.TEXT为空,所以就不知道为什么ID没有绑定上,怎么解决?
#5
应该这样,当你第一个datagrid newrow添加的时候id在数据库自动产生,但是你帮定的dataset显示的第一行没有拿到新的id值,因为这个时候的dataset是在内存中进行的而不是直接从数据库取出来的。
所以建议你用存储过程添加纪录,这样每增加一条记录返回一个新的id值,这样你的第二个DataGrid的榜定就不会有问题了
还有一种方法,就是你在Nowrow的时候就从数据库取出new Id值,然后一起update到数据库。这样第二层datagrid也不会出错。
所以建议你用存储过程添加纪录,这样每增加一条记录返回一个新的id值,这样你的第二个DataGrid的榜定就不会有问题了
还有一种方法,就是你在Nowrow的时候就从数据库取出new Id值,然后一起update到数据库。这样第二层datagrid也不会出错。
#6
用存储过程添加记录,能不能说具体一点。
第2种方法,怎样得到NEW ID ,多用户情况下?
第2种方法,怎样得到NEW ID ,多用户情况下?
#7
我用存储过程确实得到了新的ID,但是ID绑定了,其他文本框的值变不了,除非直接用把存储过程的参数赋给它们,这样却没绑定,也就是没刷新,因此本页的定位也没变(也就是本条记录在DATASET里的索引),其他操作也不对了。