以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 求助:listview中不分组时候可以双击赋值 分组显示后就不能双击赋值了 求纠正代码!(已由朱老师解决) (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=53665) |
-- 作者:李孝春 -- 发布时间:2014/7/12 20:21:00 -- 求助:listview中不分组时候可以双击赋值 分组显示后就不能双击赋值了 求纠正代码!(已由朱老师解决) 求助:listview中不分组时候可以双击赋值 分组显示后就不能双击赋值了 求纠正代码! Dim lvw As WinForm.ListView = e.Form.Controls("ListView1") lvw.StopRedraw() \'暂停绘制 lvw.View = ViewMode.SmallIcon \'显示模式为小图标 For Each dr As DataRow In DataTables("物品信息").DataRows \'从数据表中提取数据 Dim Key As String = dr("图片") Dim r As WinForm.ListViewRow = lvw.Rows.Add() \'增加一行 lvw.Images.AddSmallImage(Key, Key & ".ico") \'添加代表这个国家的小图标 r.ImageKey = Key \'指定图标键值 r.Text = dr("物品名称") \'设置标题 r.Tag = dr \'将对应的Datarow赋值给tag属性,方便在其他事件中调用 Next lvw.ResumeRedraw() \'恢复绘制 分组显示代码: Dim lvw As WinForm.ListView = e.Form.Controls("ListView1") lvw.StopRedraw() \'停止绘制 lvw.Groups.Clear() lvw.Columns.Clear() \'清除原来的列 lvw.Rows.Clear() \'清除原来的行 lvw.Images.Clear() \'清除原来的图片 lvw.View = ViewMode.Details \'显示模式为详细信息 Dim cls() As String = {"物品名称","规格","物品说明","物品单价"} \'定义列名 Dim wds() As Integer = {100,100,150,80} \'定义列宽 For i As Integer = 0 To cls.Length - 1 \'增加列 Dim c As WinForm.ListViewColumn = lvw.Columns.Add() c.Name = cls(i) \'指定列名 c.Text = cls(i) \'指定标题,这里标题和列名相同 c.Width = wds(i) \'指定列宽 Next For Each zh As String In DataTables("物品信息").GetValues("物品类别") \'增加分组 Dim grp As WinForm.ListViewGroup = lvw.Groups.Add() grp.Name = zh grp.Text = zh Next For Each dr As DataRow In DataTables("物品信息").DataRows Dim Key As String = dr("图片") Dim r As WinForm.ListViewRow = lvw.Rows.Add() \'增加一行 lvw.Images.AddImage(Key, Key & ".ico", Key & "48.ico") \'添加代表这个国家的一对图标 r.ImageKey = Key \'指定图标键值 r.Group = dr("物品类别") \'指定所属分组 For Each cl As String In cls \'逐列取值 Select Case cl Case "人口","面积" \'如果是人口列或面积列 \'r(cl) = format(dr(cl),"#,000") \'则显示千位分割符号 Case Else r(cl) = dr(cl) End Select Next Next lvw.ResumeRedraw() \'恢复绘制 listview双击事件:(在不分组情况下是可以实现赋值操作的,但是在分组下就不能了 提示错误 .NET Framework 版本:2.0.50727.6413 Foxtable 版本:2014.3.8.1 错误所在事件:窗口,下拉窗口显示菜品,ListView1,RowActivate 详细错误信息: 未将对象引用设置到对象的实例。 ) Dim lvw As WinForm.ListView = e.Sender Dim dr As DataRow = lvw.Current.tag Dim r As Row = e.Form.DropTable.Current r("消费物品") = dr("物品名称") r("物品规格") = dr("规格") r("物品单价") = dr("物品单价") e.Form.DropDownBox.Value = dr("物品名称") e.Form.DropDownBox.CloseDropdown() 求纠正双击事件代码: 纠正如下: Dim lvw As WinForm.ListView = e.Sender Dim lv As WinForm.ListViewRow = lvw.Current If lv Is Nothing Then Return End If If e.Form.DropTable IsNot Nothing Then \'如果下拉窗口是从表中打开 Dim tr As Row = e.Form.DropTable.Current tr("消费物品") = lv("物品名称") tr("物品规格") = lv("规格") tr("物品单价") = lv("物品单价") If tr("消费物品")<>"饭品" Then tr("消费数量") = 1 Else Dim fanpin As Row = Tables("消费信息").Current tr("消费数量") = fanpin("就餐人数") End If e.Form.DropDownBox.Value = lv("物品名称") End If e.Form.DropDownBox.CloseDropdown() [此贴子已经被作者于2014-7-13 22:26:54编辑过]
|