| 发表于:2007-03-25 17:50:46 楼主 |
请各位帮我解答一下为什么下面的程序在运行时删除不好用呢?急需,拜托!拜托! public class form1 inherits system.windows.forms.form protected bmdata as bindingmanagerbase protected dtdata as datatable 'badd = true 为新增 'badd = false 为修改 protected badd as boolean '设置datagrid控件 public overridable sub setdatagrid() loaddata() '定义一个datagrid表样式 dim ts as new datagridtablestyle dim acolumntextcolumn as datagridtextboxcolumn dim numcols as integer = dtdata.columns.count dim i as integer for i = 0 to numcols - 1 acolumntextcolumn = new datagridtextboxcolumn acolumntextcolumn.mappingname = _ dtdata.columns(i).columnname acolumntextcolumn.headertext = _ dtdata.columns(i).columnname acolumntextcolumn.nulltext = " " acolumntextcolumn.readonly = true ts.gridcolumnstyles.add(acolumntextcolumn) next ts.alternatingbackcolor = color.lightgray ts.allowsorting = false ts.mappingname = dtdata.tablename datagrid1.tablestyles.clear() datagrid1.tablestyles.add(ts) dim dv as dataview = dtdata.defaultview dv.allownew = false dv.allowdelete = false 'dv.allowedit = false '设置数据源 datagrid1.datasource = dtdata.defaultview bmdata = me.bindingcontext(dataset11, "读者类型 ") end sub '查询函数 public overridable sub searchresult() setdatagrid() datagrid1.datasource = dtdata.defaultview end sub '新增函数 public overridable sub loaddata() dim strfilter as string if textbox1.text.trim.length <> 0 then strfilter = "where 类型 like '% " strfilter += textbox1.text.trim + "% ' " end if '清空dataset11 dataset11.clear() sqlconnection1.connectionstring = database.sconn sqldataadapter1.selectcommand.commandtext _ = "select * from 读者类型 " + strfilter '根据查询条件重新填充dataset11 sqldataadapter1.fill(dataset11) dtdata = dataset11.tables( "读者类型 ") bmdata = me.bindingcontext(dataset11, "读者类型 ") if bmdata.count <> 0 then bmdata.position = 0 end if end sub public overridable sub saveforadd() dim dr as datarow = dataset11.tables( "读者类型 ").newrow() try dr( "类型 ") = textbox1.text.trim dr( "图书册书 ") = textbox2.text.trim dr( "期刊册书 ") = textbox3.text.trim dr( "续借次数 ") = textbox4.text.trim dr( "限制图书 ") = checkbox1.checked.tostring dr( "限制期刊 ") = checkbox2.checked.tostring catch ex as exception messagebox.show( "数据格式不正确! ") exit sub end try try dataset11.tables( "读者类型 ").rows.add(dr) if me.dataset11.haschanges = true then sqldataadapter1.update(dataset11) end if catch ex as exception messagebox.show( "数据添加失败! ") end try loaddata() datagrid1.datasource = dtdata.defaultview end sub '更新函数 public overridable sub saveforupdate() try dim row as integer row = datagrid1.currentcell.rownumber datagrid1.currentcell = _ new datagridcell((row + 1) mod bmdata.count, 0) '判断是否有更新的数据 if me.dataset11.haschanges = true then sqldataadapter1.update(dataset11) end if catch ex as exception messagebox.show( "数据修改失败! ") end try end sub '删除函数 public overridable sub deletedata() try '删除当前行的数据 dataset11.tables( "读者类型 "). _ rows(bmdata.position).delete() if me.dataset11.haschanges = true then '更新dataset11 sqldataadapter1.update(dataset11) end if catch ex as exception messagebox.show( "数据删除失败! ") end try end sub '清除函数 public overridable sub clear() me.textbox1.text = " " me.textbox2.text = " " me.textbox3.text = " " me.textbox4.text = " " me.checkbox1.checked = false me.checkbox2.checked = false end sub '设置textbox函数 public overridable sub settextboxstate(byval bstate as boolean) end sub private sub form1_load(byval sender as system.object, byval e as system.eventargs) handles mybase.load prepare() setdatagrid() settextboxstate(true) end sub private sub button1_click(byval sender as system.object, byval e as system.eventargs) searchresult() end sub private sub datagrid1_currentcellchanged(byval sender as object, byval e as system.eventargs) handles datagrid1.currentcellchanged try if bmdata is nothing then exit sub end if if bmdata.position <> datagrid1.currentcell.rownumber then bmdata.position = datagrid1.currentcell.rownumber end if catch ex as exception messagebox.show(ex.tostring) end try end sub private sub settoolbarstate(byval bstate as boolean) '设置button的是否能够单击 toolbar1.buttons( "0 ").enabled = bstate toolbar1.buttons( "1 ").enabled = bstate toolbar1.buttons( "2 ").enabled = bstate toolbar1.buttons( "3 ").enabled = bstate toolbar1.buttons( "4 ").enabled = bstate toolbar1.buttons( "5 ").enabled = bstate toolbar1.buttons( "6 ").enabled = not bstate end sub private sub toolbar1_buttonclick(byval sender as object, byval e as system.windows.forms.toolbarbuttonclickeventargs) handles toolbar1.buttonclick select case e.button.text case "首记录 " '返回首记录 bmdata.position = 0 case "上记录 " if bmdata.position <> 0 then bmdata.position -= 1 end if case "下记录 " if bmdata.position <> bmdata.count then bmdata.position += 1 end if case "尾记录 " '返回尾记录 bmdata.position = bmdata.count case "新增 " me.datagrid1.enabled = false settextboxstate(false) settoolbarstate(false) badd = true clear() case "删除 " '弹出询问对话框 dim dlgresult as dialogresult = _ messagebox.show( "你确认删除此数据? ", _ "删除 ", messageboxbuttons.okcancel) if dlgresult = dialogresult.ok then deletedata() end if case "保存 " settoolbarstate(true) settextboxstate(true) if badd = true then '为新增数据保存 saveforadd() else '为更新数据保存 saveforupdate() end if me.datagrid1.enabled = true case "退出 " '关闭本窗体 me.close() case "修改 " me.datagrid1.enabled = false settextboxstate(false) settoolbarstate(false) badd = false end select try me.datagrid1.currentrowindex = bmdata.position catch ex as exception end try end sub end class |
|
|
|
|