关于datagridview的编辑保存

edgeleaf 2018-04-14 10:07:27
winform 如何操作gridview来编辑表数据,会有文本框控件对grid过滤,然后保存过滤后的内容到数据表。有可能是updata\insert
界面如下图
...全文
948 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
FainSheeg 2018-04-16
  • 打赏
  • 举报
回复
你是要把过滤后得到的表格更新到数据库去?你直接一条条更新不就行了?当然,最好开个事务。难点在哪?
edgeleaf 2018-04-16
  • 打赏
  • 举报
回复
引用 7 楼 yangliu0512 的回复:
以前也试过用commandbuilder来进行更新,虽然用起来很方便,但是后来发现实在是不可控,我都不知道它自动生成的命令是啥样的,后来就没用了,还是乖乖自己写SQL语句去更新。另外用commandbuilder请加上这两句: scb.QuotePrefix = "[" scb.QuoteSuffix = "]" 另外你试试Dim i As Integer = da.Update(dt1.GetChanges)直接用Dim i As Integer = da.Update(dt1),dt里面保存了你做的更改信息,commandbuilder会根据这些自动生成命令。
我直接用字符串拼接了,反正表也不大,通过textchange事件来绑定grid.谢谢你了
FainSheeg 2018-04-16
  • 打赏
  • 举报
回复
以前也试过用commandbuilder来进行更新,虽然用起来很方便,但是后来发现实在是不可控,我都不知道它自动生成的命令是啥样的,后来就没用了,还是乖乖自己写SQL语句去更新。另外用commandbuilder请加上这两句: scb.QuotePrefix = "[" scb.QuoteSuffix = "]" 另外你试试Dim i As Integer = da.Update(dt1.GetChanges)直接用Dim i As Integer = da.Update(dt1),dt里面保存了你做的更改信息,commandbuilder会根据这些自动生成命令。
edgeleaf 2018-04-16
  • 打赏
  • 举报
回复
引用 3 楼 yangliu0512 的回复:
你是要把过滤后得到的表格更新到数据库去?你直接一条条更新不就行了?当然,最好开个事务。难点在哪?
哥,当我不在text输入触发事件 是能更新的。但我text过滤,更新时就报上面的错误了。
edgeleaf 2018-04-16
  • 打赏
  • 举报
回复
edgeleaf 2018-04-16
  • 打赏
  • 举报
回复
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load conn.Open() Dim da As SqlDataAdapter = New SqlDataAdapter("select * from bhmb_a", conn) da.Fill(ds, "tt") dt1 = ds.Tables(0) DataGridView1.DataSource = dt1 'conn.Close() End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim da As SqlDataAdapter = New SqlDataAdapter("select * from bhmb_a ", conn) Dim scb As SqlCommandBuilder = New SqlCommandBuilder(da) Try Dim i As Integer = da.Update(dt1.GetChanges) dt1.AcceptChanges() If i > 0 Then MsgBox("更新成功") End If Catch ex As Exception MessageBox.Show(ex.ToString()) End Try End Sub Private Sub text_changed(sender As Object, e As EventArgs) Handles TextBox1.TextChanged Dim dv As DataView = New DataView dv.Table = dt1 dv.RowFilter = "dpmc like'%" & TextBox1.Text & "%'" dt2 = dv.ToTable DataGridView1.DataSource = dt2 End Sub Private Sub dataGridView1_CellMouseUp(sender As Object, e As DataGridViewCellMouseEventArgs) Handles DataGridView1.CellMouseDown Dim index As Integer If e.Button = System.Windows.Forms.MouseButtons.Right Then DataGridView1.Rows(e.RowIndex).Selected = True index = e.RowIndex DataGridView1.CurrentCell = DataGridView1.Rows(e.RowIndex).Cells(0) ContextMenuStrip1.Show(DataGridView1, e.Location) ContextMenuStrip1.Show(Cursor.Position) End If End Sub Private Sub 删除行ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 删除行ToolStripMenuItem.Click For Each r As DataGridViewRow In DataGridView1.SelectedRows DataGridView1.Rows.Remove(r) Next End Sub Private Sub dataGridView1_DefaultValuesNeeded(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowEventArgs) _ Handles DataGridView1.DefaultValuesNeeded With e.Row .Cells("bhrq").Value = "2018-04-10" .Cells("dpmc").Value = "测试店铺" .Cells("spdm").Value = "SP123456" .Cells("ID").Value = "100" End With End Sub Private Sub form_close(sender As Object, e As EventArgs) Handles MyBase.FormClosed conn.Close() End Sub
BXS_null 2018-04-14
  • 打赏
  • 举报
回复
你说的是什么意思,是要修改内容吗?如果是修改内容的话是可以获取指针所选取行的ID的,根据id再传到修改窗体进行修改
edgeleaf 2018-04-14
  • 打赏
  • 举报
回复
通过店铺和款号的关键字搜索
1. 基类说明 1.1 基类结构图 1.2 基类说明 1.2.1 BaseEditClass BaseEditClass是所有单表编辑功能的基类。BaseEditClass从NSGForm继承,以处理统一的界面和字体风格。 BaseEditClass抽象出了编辑类功能通用的方法并定义为基类方法,以便子类继承,并增加自己的代码。  自定义属性 名称 说明 DataTable 功能所编辑的数据表 DataState 功能所处的状态:浏览(dsBrowse)、新增(dsInsert)、编辑(dsEdit) BatchSave 是否批量提交数据表,默认为False DeleteWarn 在删除记录时是否提示,默认为True  自定义方法 名称 说明 FormInit 在FormLoad时被调用,具体功能中可重载该方法添加自定义的初始化代码 PostData 具体功能中需要重载该方法,并调用具体的TableAdapter.Update(row),以保存数据至数据库。 RefreshData 统一的刷新数据表过程,具体功能中需要重载该方法,并调用具体的TableAdapter.Fill(DataTable),以查询数据 DataValid 统一的数据验证方法,在保存数据前被调用。具体功能中可重载该方法添加自定义的数据校验代码 NewRecord 在新增数据时被调用,在具体过程中可重载该方法添加自定义的新增记录默认值 SaveData 保存数据的方法,具体功能中调用该过程保存数据 DeleteData 删除数据的方法,具体功能中调用该过程删除数据 CancelData 取消数据修改的方法,具体功能中调用该过程取消数据修改 1.2.2 BaseGridEdit BaseGridEdit是所有直接使用DataGridView进行编辑的功能的基类。BaseGridEdit从BaseEditClass继承。 自定义属性 名称 说明 Grid 编辑所用的DataGridView 自定义方法 名称 说明 RecordValid 统一的数据验证方法,在单条保存数据前被调用。具体功能中可重载该方法添加自定义的数据校验代码 1.2.3 BaseGridEditForm BaseGridEditForm是所有直接使用DataGridView进行编辑的功能的模板。所有直接使用DataGridView进行编辑的功能都需要从该模板拷贝后进行修改。 2. 模板使用方法 2.1 BaseGridEditForm 使用BaseGridEditForm需要按以下四步操作就可以得到需要的功能。 一、 先从BaseGridEditForm拷贝文件到工程后修改类名、命名空间 二、 在项目的数据集中增加TableAdapter,以查询需要维护的指定的数据表 三、 将DataGridView绑定到新增的数据表 四、 修改以下基类方法 名称 说明 构造方法 增加”DataTable属性=新增数据表”的代码 FormInit 增加需要的Form初始化代码,如RefreshData以获得数据 PostData 增加一行代码:新增的TableAdapter.Update(row) RefreshData 增加使用新增TableAdapter.Fill(DataTable)的代码,以获得查询数据。注意:代码需要写在IsRefreshData = true;和 IsRefreshData = false;语句的中间 RecordValid 增加自定义的数据校验语句。 NewRecord 增加自定义的新增数据默认值代码。

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧