前端之家收集整理的这篇文章主要介绍了
[VB.NET]求个修改和删除代码??,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
求个
修改和
删除代码??
我用的是vb.net和
sql2000,想通过
修改datagrid中的信息来直接
修改数据库中的信息,希望高手可以给我写个
修改代码,最好是完整的
想通过点击按纽
删除来
删除datagrid选中的行,同时
删除对应的
数据库中的信息。
希望高手能给我写出
删除按纽中的
代码,最好是完整的,
如图 http://www1.freep.cn/photo1.
PHP?url=url=photo5/0705211514221468.JPG
先谢谢了
__________________________________________________________________________
前台代码:
<%@ Page Language= "vb " AutoEventWireup= "false " Codebehind= "sbchange.aspx.vb " Inherits= "jianan.sbchange "%>
__________________________________________________________________________
后台代码:
Imports System.Data.OleDb
Public Class sbchange
Inherits System.Web.UI.Page
#Region " Web 窗体设计器
生成的
代码 "
''该
调用是 Web 窗体设计器所必需的。
Private Sub InitializeComponent() End Sub Protected WithEvents Drop1 As System.Web.UI.WebControls.DropDownList Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid ''注意: 以下占位符声明是 Web 窗体设计器所必需的。 ''不要删除或移动它。 Private designerPlaceholderDeclaration As System.Object Private Sub Page_Init(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles MyBase.Init ''CODEGEN: 此方法调用是 Web 窗体设计器所必需的 ''不要使用代码编辑器修改它。 InitializeComponent() End Sub #End Region Dim con As New OleDbConnection( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath( " data/jadata.aspx ")) Dim com As New OleDbCommand Private Sub Page_Load(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles MyBase.Load ''在此处放置初始化页的用户代码 If InStr(Session( "AdminPass "),"pass ") = 0 Then Me.Response.Redirect( "jiananAdmin.aspx ") Else If Not IsPostBack Then bindgrid() End If End If End Sub Sub bindgrid() Dim dat As New DataSet com.Connection = con com.Parameters.Add(New OleDbParameter( "@pno ",OleDbType.VarChar)) com.Parameters( "@pno ").Value = Trim(Drop1.SelectedItem.Value) com.CommandText = "select * from sb where (sbkind=@pno) " Dim dap As New OleDbDataAdapter dap.SelectCommand = com dap.Fill(dat) DataGrid1.DataSource = dat.Tables(0) DataGrid1.DataBind() End Sub Sub editmainyj(ByVal sender As Object,ByVal e As DataGridCommandEventArgs) DataGrid1.EditItemIndex = e.Item.ItemIndex bindgrid() End Sub Sub canceledit(ByVal sender As Object,ByVal e As DataGridCommandEventArgs) DataGrid1.EditItemIndex = -1 bindgrid() End Sub Sub updateedit(ByVal sender As Object,ByVal e As DataGridCommandEventArgs) com.Connection = con Dim tsbname As TextBox,tsbxh As TextBox,tsbjs As TextBox,tsbsl As TextBox tsbname = e.Item.Cells(1).Controls(0) tsbxh = e.Item.Cells(2).Controls(0) tsbjs = e.Item.Cells(3).Controls(0) tsbsl = e.Item.Cells(4).Controls(0) Dim picno As Integer picno = Trim(e.Item.Cells(0).Text) com.Parameters.Add(New OleDbParameter( "@pno ",OleDbType.VarChar)) com.Parameters( "@pno ").Value = picno com.CommandText = "update sb set sbname= '' " & tsbname.Text & " '',sbxh= '' " & tsbxh.Text & " '',sbjs= '' " & tsbjs.Text & " '',sbsl= '' " & tsbsl.Text & " '' where (sbid=@pno) " con.Open() com.ExecuteNonQuery() con.Close() DataGrid1.EditItemIndex = -1 bindgrid() End Sub Sub delete(ByVal sender As Object,ByVal e As DataGridCommandEventArgs) com.Connection = con Dim picno As Integer picno = Trim(e.Item.Cells(0).Text) com.Parameters.Add(New OleDbParameter( "@pno ",OleDbType.VarChar)) com.Parameters( "@pno ").Value = picno com.CommandText = "delete from sb where (sbid =@pno) " con.Open() com.ExecuteNonQuery() con.Close() bindgrid() End Sub Private Sub Drop1_SelectedIndexChanged(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Drop1.SelectedIndexChanged bindgrid() End Sub Private Sub DataGrid1_PageIndexChanged(ByVal source As Object,ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles DataGrid1.PageIndexChanged On Error GoTo s1 DataGrid1.CurrentPageIndex = e.NewPageIndex s1: bindgrid() End Sub End Class __________________________________________________________________________ 用的是access数据库,sql2000的你改一下就可以了.. __________________________________________________________________________ 哦。 __________________________________________________________________________ 可是人家的是winForm程序啊,你怎么给了段webForm代码? __________________________________________________________________________ winForm不是更简单吗? 修改可以直接修改,删除deleterow(行号) 完成后,update就可以了.. __________________________________________________________________________ '' 这个是DataGridView的一段代码,您看看可不可以 Imports System.Data Imports System.Data.sqlClient Public Class Form1 Dim conn As sqlConnection Dim da As sqlDataAdapter Dim ds As DataSet Dim b As sqlCommandBuilder Private Sub Form1_Load(ByVal sender As Object,ByVal e As System.EventArgs) Handles Me.Load conn = New sqlConnection( "您的链接词 ") conn.Open() da = New sqlDataAdapter( "SELECT * FROM 表1 ",conn) ds = New DataSet da.Fill(ds) conn.Close() DataGridView1.DataSource = ds.Tables(0) Me.DataGridView1.AllowUserToDeleteRows = True Me.DataGridView1.AllowUserToAddRows = True Me.DataGridView1.EditMode = DataGridViewEditMode.EditOnEnter b = New sqlCommandBuilder(da) End Sub '' 修改 Private Sub Button1_Click(ByVal sender As Object,ByVal e As System.EventArgs) Handles Button1.Click Try da.Update(ds) ds.AcceptChanges() MsgBox( "Updated ") Catch ex As Exception MsgBox( "Error ") End Try End Sub '' 删除 Private Sub Button2_Click(ByVal sender As Object,ByVal e As System.EventArgs) Handles Button2.Click Me.DataGridView1.Rows.Remove(Me.DataGridView1.CurrentRow) Try da.Update(ds) ds.AcceptChanges() MsgBox( "Updated ") Catch ex As Exception MsgBox( "Error ") End Try End Sub End Class __________________________________________________________________________ http://chs.gotdotnet.com/quickstart/aspplus/doc/webdataaccess.aspx#serverdata __________________________________________________________________________ magicbacon(Cannot help coding) 你的代码输入后显示的是 “DataGridView1”不是“工程1.公寓基本情况查询”的成员。 点击修改后 显示“Error” __________________________________________________________________________ D:/我的文件/工程1.NET/公寓基本情况查询.vb(291): “DataGridView1”不是“工程1.公寓基本情况查询”的成员。 D:/我的文件/工程1.NET/公寓基本情况查询.vb(292): “DataGridView1”不是“工程1.公寓基本情况查询”的成员。 D:/我的文件/工程1.NET/公寓基本情况查询.vb(293): “DataGridView1”不是“工程1.公寓基本情况查询”的成员。 D:/我的文件/工程1.NET/公寓基本情况查询.vb(306): “DataGridView1”不是“工程1.公寓基本情况查询”的成员。 D:/我的文件/工程1.NET/公寓基本情况查询.vb(306): “DataGridView1”不是“工程1.公寓基本情况查询”的成员。 D:/我的文件/工程1.NET/公寓基本情况查询.vb(290): 名称“DataGridView1”未声明。 D:/我的文件/工程1.NET/公寓基本情况查询.vb(293): 名称“DataGridViewEditMode”未声明。 __________________________________________________________________________ 我的是2005啊,呵呵。我的意思只能参考一下的。 __________________________________________________________________________ 你帮我改一下吧 看是哪的问题 vb.net里我就找不见DataGridView1这个 __________________________________________________________________________ 好吧,我试试。 __________________________________________________________________________ 谢谢了 __________________________________________________________________________ '' 很抱歉,您可以试试我的代码,但是这段代码没经过测试 Imports System.Data Imports System.Data.sqlClient Public Class Form1 Dim conn As sqlConnection Dim da As sqlDataAdapter Dim ds As DataSet Dim b As sqlCommandBuilder Private Sub Form1_Load(ByVal sender As Object,conn) ds = New DataSet da.Fill(ds) conn.Close() DataGrid1.DataSource = ds.Tables(0) b = New sqlCommandBuilder(da) End Sub '' 修改 Private Sub Button1_Click(ByVal sender As Object,ByVal e As System.EventArgs) Handles Button2.Click ds.Tables(0).Rows.RemoveAt(Me.DataGrid1.CurrentRowIndex) Try da.Update(ds) ds.AcceptChanges() da.Fill(ds) MsgBox( "Updated ") Catch ex As Exception MsgBox( "Error ") End Try End Sub End Class __________________________________________________________________________ . __________________________________________________________________________ 写上代码没有错误显示 运行时点击删除 出现一个小窗口显示Updated 并没有删除 修改了其中信息点击修改时 出现一个小窗口显示Error 最前面出现了红色感叹号 显示的是‘对于不返回任何键列信息的selectCommand不支持updataCommand的动态sql生成’。 __________________________________________________________________________ 您的数据库有主键么? __________________________________________________________________________ 应该是没有 __________________________________________________________________________ 要有主键才行的。 __________________________________________________________________________ 可以告诉我怎么弄主键么?? __________________________________________________________________________ 就是在您的数据库中找到这个表,然后把某个特征列设置为主键,在设计视图中用右键单击那个字段应该可以看到的。每条记录的主键都必须唯一,如果做不到可以用两个或多个字段做联合主键,唯一地确定一条记录,也可以加入一个自动增加的字段作为主键。 您既然会用数据库,不会不知道主键吧? __________________________________________________________________________ 我设置了主键了 修改可以实现了 但是删除还是不行 点击删除后出现Updated,但是datagrid和表中的信息并没有删除掉。 __________________________________________________________________________ 我再试试别的写法看。 __________________________________________________________________________ 谢谢了 __________________________________________________________________________ '' 删除 Private Sub Button2_Click(ByVal sender As Object,ByVal e As System.EventArgs) Handles Button2.Click Try conn.Open() da.DeleteCommand = New sqlCommand( "DELETE FROM 表1 WHERE ID=@ID ",conn) da.DeleteCommand.Parameters.Add( "@ID ",sqlDbType.Int) da.DeleteCommand.Parameters( "@ID ").Value = ds.Tables(0).Rows(Me.DataGrid1.CurrentRowIndex)(0) da.DeleteCommand.ExecuteNonQuery() ds.Tables(0).Clear() da.Fill(ds) Me.DataGrid1.DataSource = ds.Tables(0) conn.Close() MsgBox( "Updated ") Catch ex As Exception MsgBox( "Error ") End Try End Sub __________________________________________________________________________ 久等了。 我这个菜鸟耽误您时间了,抱歉啊。 这次手动生成sql语句,应该可以了。在删除后重新读取数据绑定到DataGrid1上。 __________________________________________________________________________ 其中ID是您的主键,用它来确定要删除的行。 __________________________________________________________________________ 我用的是vb.net2005 的winfrom (DataGridView1) 用上面的代码无法删除、更新数据。 给大哥帮个忙啊。 __________________________________________________________________________ ls的,您再开个帖,把您的情况说一下吧。 __________________________________________________________________________ Private Sub _Command1_4_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles _Command1_4.Click Try conn.Open() da.DeleteCommand = New sqlCommand( "DELETE FROM 公寓基本情况 WHERE ID=@地址 ",conn) da.DeleteCommand.Parameters.Add( "@地址 ",sqlDbType.Int) da.DeleteCommand.Parameters( "@地址 ").Value = ds.Tables(0).Rows(Me.DataGrid1.CurrentRowIndex)(0) da.DeleteCommand.ExecuteNonQuery() ds.Tables(0).Clear() da.Fill(ds) Me.DataGrid1.DataSource = ds.Tables(0) conn.Close() MsgBox( "Updated ") Catch ex As Exception MsgBox( "Error ") End Try End Sub 我的按照你的这个代码 调试时一直都没有删除,一直都是Error,我的表主键是地址 帮忙看看吧 __________________________________________________________________________ 先不要用try catch看看报什么错 __________________________________________________________________________ 地址在您的DataGridView中是第一列么?数据类型是Int么?我估计是 da.DeleteCommand.Parameters.Add( "@地址 ",sqlDbType.Int) da.DeleteCommand.Parameters( "@地址 ").Value = ds.Tables(0).Rows(Me.DataGrid1.CurrentRowIndex)(0) 这两句中有错,您先把上面两个问题的答案说一下,我改过不行的话再把 Catch ex As Exception MsgBox( "Error ") End Try 改成 Catch ex As Exception MsgBox( "ex.Message ") End Try 看看报什么错吧。 __________________________________________________________________________ 地址在我的DataGridView中是第一列 数据类型是char __________________________________________________________________________ 呵呵,这个问题我也搞了好久 如果你用2005就好办多了 用一个bindingSource 绑定一下 adapter.fill(dataset,"tablename ") bindingsource=dataset bindingsource= "tablename " datagridview.source=bindingsource 然后就可以通过 bindingsource 修改删除数据了 因为datagridview移动记录时,bindingsource 游标是变的,所以操作bindingsource当前记录就可以了 修改 BindingSource1.Current!公司名称 = CustomerNameTextBox.Text BindingSource1.Current!公司地址 = AddressTextBox.Text BindingSource1.ResetBindings(True) BindingSource1.EndEdit() 删除 BindingSource1.RemoveCurrent() __________________________________________________________________________ 修改一下 adapter.fill(dataset,"tablename ") BindingSource.DataSource = dataset BindingSource.DataMember = "tablename " __________________________________________________________________________ 那么 da.DeleteCommand.Parameters.Add( "@地址 ",sqlDbType.Int) 这一句应该改为 da.DeleteCommand.Parameters.Add( "@地址 ",sqlDbType.Char) 才对哦~~~~ __________________________________________________________________________ 晕呀那么长的代码呀 超出了我的阅读范围 真是高手呀 好长好长呀 希望我有一天我也可以,写那么长的代码 __________________________________________________________________________