问题1 因为我用的是vs2005 所以GridView1的更新代码是不是必须设置gv.DataKeyNames 属性和必须用gv.DataKeys来取值。
问题2 如果用datakeynames怎么赋值?怎么取值
问题3 Protected Sub form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles form1.Load
If IsPostBack = True Then
bind() //绑定
End If
End Sub
更新 Protected Sub gv_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles gv.RowUpdating
Dim s As String = "Data Source=.;Initial Catalog=teacher;Integrated Security=True"
Dim i As String = CType((gv.Rows(e.RowIndex).Cells(1).Controls(0)), TextBox).Text.ToString.Trim
Dim s1 As String = CType((gv.Rows(e.RowIndex).Cells(2).Controls(0)), TextBox).Text.ToString.Trim
Dim s2 As String = CType((gv.Rows(e.RowIndex).Cells(3).Controls(0)), TextBox).Text.ToString.Trim
Dim s3 As String = "update AA set name='" + s1 + "',password='" + s2 + "' where id='" + i + "'"
Dim sql As New SqlConnection(s)
Dim sqlcom As New SqlCommand(s3, sql)
sql.Open() Session("ss") = s1// 为什么s1显示出来是更新前的数据 不是更新后的数据
sqlcom.ExecuteNonQuery() sql.Close() gv.EditIndex = -1
bind()
End Sub
问题2 如果用datakeynames怎么赋值?怎么取值
问题3 Protected Sub form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles form1.Load
If IsPostBack = True Then
bind() //绑定
End If
End Sub
更新 Protected Sub gv_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles gv.RowUpdating
Dim s As String = "Data Source=.;Initial Catalog=teacher;Integrated Security=True"
Dim i As String = CType((gv.Rows(e.RowIndex).Cells(1).Controls(0)), TextBox).Text.ToString.Trim
Dim s1 As String = CType((gv.Rows(e.RowIndex).Cells(2).Controls(0)), TextBox).Text.ToString.Trim
Dim s2 As String = CType((gv.Rows(e.RowIndex).Cells(3).Controls(0)), TextBox).Text.ToString.Trim
Dim s3 As String = "update AA set name='" + s1 + "',password='" + s2 + "' where id='" + i + "'"
Dim sql As New SqlConnection(s)
Dim sqlcom As New SqlCommand(s3, sql)
sql.Open() Session("ss") = s1// 为什么s1显示出来是更新前的数据 不是更新后的数据
sqlcom.ExecuteNonQuery() sql.Close() gv.EditIndex = -1
bind()
End Sub
解决方案 »
- 在事件中如何访问方法中的定义好的DATASET
- vs2003运行应用程序出错
- 请问一位这样的技术总监有多强,以及大概月工资有多少
- 一个用javascript写的menu,安装到两台机器上,一台装了上网助手,另一台没装,装的那一台menu的java脚本事件无效
- 问题!日历控件,怎么允许选择年份?
- 生成PDF时 如果客户端没有PDF软件 那么出现下载对话框 点取消后还会循环出现下载对话框
- 谁知道用友财务管理中,计算存货成本的移动加权平均法是如何实现的?有现成的算法么?
- html的文本输入控件怎么设置宽度为100%?
- 在linq查询时截取字符串,这样写为什么不对?
- 问一个excel问题
- GridView排序改变sqldatasouce数据源控件内存中的数据排序吗?
- 判断用户名是否被注册!!!
GridView1的更新代码不是必须设置gv.DataKeyNames 属性和必须用gv.DataKeys来取值。
还可以用其他的绑定功能来取值。
比如把ID绑定到像按钮之类的控件上,进行取值和修改:就是这个:CommandArgument属性。
先是在视图上点击GridView——右键属性——设置datakeynames的值:这里的值是一些数据库的字段,比如ID
然后用的时候在GridView的行绑定事件里写代码: string value=this.GridView1.DataKeys[e.Row.RowIndex].value.ToString();//这个用e来确定行数。这样来得到绑定的值。
可是vb里面用代码datekeynames怎么赋值
第三个问题,
Session("ss") = s1。你这样写,语法正确吗。我不记得是Session["ss"]=s1.这样写吗
可以再gridview属性里面赋值
string id=((DataRowView)GridView1.Rows[e.RowIndex].DataItem)["字段名称"].ToString();
顺便解释下7楼的大哥的代码
string id=((DataRowView)GridView1.Rows[e.RowIndex].DataItem)["字段名称"].ToString();
谢谢
虽然我没用过GV,不过这个也很容易看出来你所取的字段值=((数据行类型)GV1.行[对象的行索引].数据项)["对应绑定的数据字段"].ToString();
If IsPostBack = True Then
bind() //绑定
End If
End Sub
更新 Protected Sub gv_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles gv.RowUpdating
Dim s As String = "Data Source=.;Initial Catalog=teacher;Integrated Security=True"
Dim i As String = CType((gv.Rows(e.RowIndex).Cells(1).Controls(0)), TextBox).Text.ToString.Trim
Dim s1 As String = CType((gv.Rows(e.RowIndex).Cells(2).Controls(0)), TextBox).Text.ToString.Trim
Dim s2 As String = CType((gv.Rows(e.RowIndex).Cells(3).Controls(0)), TextBox).Text.ToString.Trim
Dim s3 As String = "update AA set name='" + s1 + "',password='" + s2 + "' where id='" + i + "'"
Dim sql As New SqlConnection(s)
Dim sqlcom As New SqlCommand(s3, sql)
sql.Open()
Session("ss") = s1// 为什么s1显示出来是更新前的数据 不是更新后的数据
sqlcom.ExecuteNonQuery()
sql.Close()
gv.EditIndex = -1
bind()
End Sub
后台取选中的Id:
Button btn = (Button)sender;
string id= btn.Text.Trim();
就是那么简单.绝对可行.
问题一,问题二已解决了,剩下问题三,你没仔细看吧。If IsPostBack = True Then
bind() //绑定
End If
End Sub bind()方法怎么写的,有可能是没有回调,
造成Dim s1 As String = CType((gv.Rows(e.RowIndex).Cells(2).Controls(0)), TextBox).Text.ToString.Trim
的值没有获取到你需要更新的值。
Public Sub bind()
Dim s As String = "Data Source=.;Initial Catalog=teacher;Integrated Security=True"
Dim a As String = "select * from AA"
Dim sql As New SqlConnection(s)
sql.Open()
Dim scmd As New SqlDataAdapter(a, sql)
Dim ad As SqlCommandBuilder = New SqlCommandBuilder(scmd)
Dim ds As Data.DataSet = New Data.DataSet()
scmd.Fill(ds) gv.DataSource = ds.Tables(0)
gv.DataBind() sql.Close() End Sub
在更新后重新赋值