vb.net - CheckedListBox in DataGridview Winforms VB NET -
i have datagridview data source contains many many relationship bin {id, name, bingradeid}, bingradeid {binid, gradeid, gradename }, grade {id, name}
i trying expose grades in checkedlistboxcolumn , right can not seem checkedlistboxcolumn
i have added checkedlistboxcolumn datagridview programatically. lacking in knowing how bind data source , have tried both examples here add multiple checkedlistbox columns of datagrid view
i have tried both of example codes posted - jeremy thompson - example looks nice nothing pop up/out this:

i tried other checkedlistboxcolumn , not work either.
here code add column datagridview
dim dgvchkcol checkedlistboxcolumn = new checkedlistboxcolumn() dgvchkcol.datapropertyname = "gradeid" dgvchkcol.name = "gradescheckbox" dgvchkcol.visible = true dgvchkcol.headertext = "gradescheckbox" datagridview1.columns.add(dgvchkcol) any code in vb or c# fine me - can convert easy enough - lacking in checkedlistbox , how in datagridview
in case wants see checkedlistbox code - c# converted vbnet
public class checkedlistboxcolumn inherits datagridviewcolumn public sub new() mybase.new(new checkedlistboxcell()) end sub public overrides property celltemplate() datagridviewcell return mybase.celltemplate end set(value datagridviewcell) if value isnot nothing andalso not value.[gettype]().isassignablefrom(gettype(checkedlistboxcell)) throw new invalidcastexception("must checkedlistboxcell") end if mybase.celltemplate = value end set end property end class public class checkedlistboxcell inherits datagridviewcell public sub new() mybase.new() end sub public overrides sub initializeeditingcontrol(rowindex integer, initialformattedvalue object, datagridviewcellstyle datagridviewcellstyle) ' set value of editing control current cell value. mybase.initializeeditingcontrol(rowindex, initialformattedvalue, datagridviewcellstyle) dim ctl checkedlistboxeditingcontrol = trycast(datagridview.editingcontrol, checkedlistboxeditingcontrol) initializecheckedlistbox(ctl, directcast(me.formattedvalue, icollection)) end sub private sub initializecheckedlistbox(ctrl checkedlistbox, value icollection) ctrl.items.clear() each obj object in value ctrl.items.add(obj.tostring()) next ctrl.tag = me.value end sub public overrides readonly property edittype() type return gettype(checkedlistboxeditingcontrol) end end property protected overrides function getformattedvalue(value object, rowindex integer, byref cellstyle datagridviewcellstyle, valuetypeconverter system.componentmodel.typeconverter, formattedvaluetypeconverter system.componentmodel.typeconverter, context datagridviewdataerrorcontexts) object if value nothing return new list(of object)() end if return mybase.getformattedvalue(value, rowindex, cellstyle, valuetypeconverter, formattedvaluetypeconverter, context) end function public overrides readonly property formattedvaluetype() type return gettype(icollection) end end property public overrides property valuetype() type return gettype(icollection) end set(value type) end set end property private internalcontrol checkedlistbox protected overrides sub paint(graphics system.drawing.graphics, clipbounds system.drawing.rectangle, cellbounds system.drawing.rectangle, rowindex integer, cellstate datagridviewelementstates, value object, _ formattedvalue object, errortext string, cellstyle datagridviewcellstyle, advancedborderstyle datagridviewadvancedborderstyle, paintparts datagridviewpaintparts) mybase.paint(graphics, clipbounds, cellbounds, rowindex, cellstate, value, _ formattedvalue, errortext, cellstyle, advancedborderstyle, paintparts) graphics.fillrectangle(new solidbrush(cellstyle.backcolor), cellbounds) if internalcontrol nothing internalcontrol = new checkedlistbox() end if internalcontrol.items.clear() dim collection icollection = trycast(value, icollection) if collection isnot nothing each obj object in collection internalcontrol.items.add(obj) next dim bmp new bitmap(cellbounds.width, cellbounds.height) internalcontrol.drawtobitmap(bmp, new rectangle(0, 0, bmp.width, bmp.height)) graphics.drawimage(bmp, cellbounds, new rectangle(0, 0, bmp.width, bmp.height), graphicsunit.pixel) end if end sub protected overrides sub onclick(e datagridviewcelleventargs) me.datagridview.beginedit(false) mybase.onclick(e) end sub public readonly property checkeditems() icollection 'implements idatagridvieweditingcontrol. if internalcontrol nothing return nothing else if internalcontrol isnot nothing if internalcontrol.checkeditems.count > 0 return internalcontrol.checkeditems else if directcast(me.datagridview.rows(rowindex).cells(columnindex).datagridview.editingcontrol, checkedlistbox) isnot nothing dim checks checkedlistbox = directcast(me.datagridview.rows(rowindex).cells(columnindex).datagridview.editingcontrol, checkedlistbox) if checks.checkeditems.count > 0 return checks.checkeditems else return nothing end if else return nothing end if end if else return nothing end if end if end end property end class class checkedlistboxeditingcontrol inherits checkedlistbox implements idatagridvieweditingcontrol private datagridview datagridview private valuechanged boolean = false private rowindex integer public sub new() end sub ' implements idatagridvieweditingcontrol.editingcontrolformattedvalue ' property. public property editingcontrolformattedvalue() object implements idatagridvieweditingcontrol.editingcontrolformattedvalue return me.tag end ' this.tag = value; set(value object) end set end property ' implements ' idatagridvieweditingcontrol.geteditingcontrolformattedvalue method. public function geteditingcontrolformattedvalue(context datagridviewdataerrorcontexts) object implements idatagridvieweditingcontrol.geteditingcontrolformattedvalue return editingcontrolformattedvalue end function ' implements ' idatagridvieweditingcontrol.applycellstyletoeditingcontrol method. public sub applycellstyletoeditingcontrol(datagridviewcellstyle datagridviewcellstyle) implements idatagridvieweditingcontrol.applycellstyletoeditingcontrol me.font = datagridviewcellstyle.font me.forecolor = datagridviewcellstyle.forecolor me.backcolor = datagridviewcellstyle.backcolor end sub ' implements idatagridvieweditingcontrol.editingcontrolrowindex ' property. public property editingcontrolrowindex() integer implements idatagridvieweditingcontrol.editingcontrolrowindex return rowindex end set(value integer) rowindex = value end set end property ' implements idatagridvieweditingcontrol.editingcontrolwantsinputkey ' method. public function editingcontrolwantsinputkey(key keys, datagridviewwantsinputkey boolean) boolean implements idatagridvieweditingcontrol.editingcontrolwantsinputkey ' let datetimepicker handle keys listed. select case key , keys.keycode case keys.left, keys.up, keys.down, keys.right, keys.home, keys.[end], _ keys.pagedown, keys.pageup return true case else return not datagridviewwantsinputkey end select end function ' implements idatagridvieweditingcontrol.prepareeditingcontrolforedit ' method. public sub prepareeditingcontrolforedit(selectall boolean) implements idatagridvieweditingcontrol.prepareeditingcontrolforedit ' no preparation needs done. end sub ' implements idatagridvieweditingcontrol ' .repositioneditingcontrolonvaluechange property. public readonly property repositioneditingcontrolonvaluechange() boolean implements idatagridvieweditingcontrol.repositioneditingcontrolonvaluechange return false end end property ' implements idatagridvieweditingcontrol ' .editingcontroldatagridview property. public property editingcontroldatagridview() datagridview implements idatagridvieweditingcontrol.editingcontroldatagridview return datagridview end set(value datagridview) datagridview = value end set end property ' implements idatagridvieweditingcontrol ' .editingcontrolvaluechanged property. public property editingcontrolvaluechanged() boolean implements idatagridvieweditingcontrol.editingcontrolvaluechanged return valuechanged end set(value boolean) valuechanged = value end set end property ' implements idatagridvieweditingcontrol ' .editingpanelcursor property. public readonly property editingpanelcursor() cursor implements idatagridvieweditingcontrol.editingpanelcursor return mybase.cursor end end property end class
Comments
Post a Comment