vb.net 利用datagridview显示DB数据(复杂数据的取得和显示)
2012-08-10 19:08
405 查看
在文章/article/9609867.html 中已经介绍了datagridview直接显示数据库表的方法.
但是在实际操作中,更多的情况是需要先对显示的数据库表内容进行编辑,甚至是多个表结合之后的结果需要显示.
这时候能够将表内容的编辑结构,放到DataTable中的DataRow中,
先设定DataRow的列项目,然后在一条条的将输入导入DataRow,最后将DataRow追加到DataTable中
这样就可以实现复杂内容在datagridview中显示了
1 窗口form中追加控件datagridview
2 窗口form程序中设定:
'整理数据并显示在gridview中
Private Function editDataAndShow()
'循环用变量
Dim i As Integer
Dim j As Integer
'门店信息List
Dim storeList As New ArrayList
'人员信息List
Dim dummymanList As New ArrayList
'返回错误flag值
Dim hasErrorFlg As Boolean = False
'临时用Hashtable
Dim tmpTable As New Hashtable
'view显示用table
Dim viewTable As New Hashtable
'DataTable
Dim table As New DataTable
'datatable中使用的datarow
Dim tableRow As DataRow
Try
'取得门店信息
storeList = readDataFromDB.selectSellinStore()
'gridview中需要显示的列,都要在DataTable中先定义
'此处定义的顺序, 即gridview显示的顺序
'门店信息
table.Columns.Add("门店key")
table.Columns.Add("门店类型")
table.Columns.Add("门店ID")
table.Columns.Add("门店名称(地址)")
table.Columns.Add("地理城市")
table.Columns.Add("地理大区")
table.Columns.Add("销售归属城市")
table.Columns.Add("销售归属大区")
table.Columns.Add("销售归属公司")
table.Columns.Add("渠道")
table.Columns.Add("大客户名称")
table.Columns.Add("客户详细名称")
'门店状态
table.Columns.Add("门店状态")
'人员信息
table.Columns.Add("SR1")
table.Columns.Add("SR1销售所占百分比")
table.Columns.Add("SR2")
table.Columns.Add("SR2销售所占百分比")
table.Columns.Add("SR3")
table.Columns.Add("SR3销售所占百分比")
table.Columns.Add("SR4")
table.Columns.Add("SR4销售所占百分比")
table.Columns.Add("SR5")
table.Columns.Add("SR5销售所占百分比")
table.Columns.Add("SR6")
table.Columns.Add("SR6销售所占百分比")
table.Columns.Add("SR7")
table.Columns.Add("SR7销售所占百分比")
table.Columns.Add("SR8")
table.Columns.Add("SR8销售所占百分比")
table.Columns.Add("SR9")
table.Columns.Add("SR9销售所占百分比")
table.Columns.Add("SR10")
table.Columns.Add("SR10销售所占百分比")
table.Columns.Add("SR11")
table.Columns.Add("SR11销售所占百分比")
table.Columns.Add("SR12")
table.Columns.Add("SR12销售所占百分比")
table.Columns.Add("SR13")
table.Columns.Add("SR13销售所占百分比")
table.Columns.Add("SR14")
table.Columns.Add("SR14销售所占百分比")
table.Columns.Add("SR15")
table.Columns.Add("SR15销售所占百分比")
table.Columns.Add("KAM")
table.Columns.Add("DSM")
'SR是否拆分
table.Columns.Add("SR拆分区分")
For i = 0 To storeList.Count - 1 Step 1
'清空Hashtable
tmpTable.Clear()
viewTable.Clear()
'将门店信息保存在table中,以便gridview显示
tableRow = table.NewRow
tableRow("门店key") = CType(storeList.Item(i), SellinStoreBean).storeKey.Trim
tableRow("门店类型") = CType(storeList.Item(i), SellinStoreBean).storeType.Trim
tableRow("门店ID") = CType(storeList.Item(i), SellinStoreBean).storeID.Trim
tableRow("门店名称(地址)") = CType(storeList.Item(i), SellinStoreBean).storeName.Trim
tableRow("地理城市") = CType(storeList.Item(i), SellinStoreBean).geoCity.Trim
tableRow("地理大区") = CType(storeList.Item(i), SellinStoreBean).geoRegion.Trim
tableRow("销售归属城市") = CType(storeList.Item(i), SellinStoreBean).salesCity.Trim
tableRow("销售归属大区") = CType(storeList.Item(i), SellinStoreBean).salesRegion.Trim
tableRow("销售归属公司") = CType(storeList.Item(i), SellinStoreBean).salesCompany.Trim
tableRow("渠道") = CType(storeList.Item(i), SellinStoreBean).channel.Trim
tableRow("大客户名称") = CType(storeList.Item(i), SellinStoreBean).cTotalName.Trim
tableRow("客户详细名称") = CType(storeList.Item(i), SellinStoreBean).cDetailName.Trim
tableRow("门店状态") = CType(storeList.Item(i), SellinStoreBean).status.Trim
'取得DSM
tmpTable.Add("storeKey", CType(storeList.Item(i), SellinStoreBean).storeKey.Trim)
tmpTable.Add("positionLevel", Constant.DUMMYMAN_POSITION_DSM)
tmpTable.Add("type", Constant.RELATION_TYPE_SELLIN)
dummymanList = readDataFromDB.selectSellinRelationByLevel(tmpTable)
'将DSM信息保存在table中,以便gridview显示(因为人员变动,DSM有可能为空,所以要追加判断)
If dummymanList.Count <> 0 Then
tableRow("DSM") = CType(dummymanList.Item(0), Object)(0).ToString.Trim
End If
'清空Hashtable
tmpTable.Clear()
dummymanList.Clear()
'取得KAM
tmpTable.Add("storeKey", CType(storeList.Item(i), SellinStoreBean).storeKey.Trim)
tmpTable.Add("positionLevel", Constant.DUMMYMAN_POSITION_KAM)
tmpTable.Add("type", Constant.RELATION_TYPE_SELLIN)
dummymanList = readDataFromDB.selectSellinRelationByLevel(tmpTable)
'将KAM信息保存在table中,以便gridview显示(因为KAM有可能为空,所以要追加判断)
If dummymanList.Count <> 0 Then
tableRow("KAM") = CType(dummymanList.Item(0), Object)(0).ToString.Trim
End If
'清空Hashtable
tmpTable.Clear()
dummymanList.Clear()
'取得SR
tmpTable.Add("storeKey", CType(storeList.Item(i), SellinStoreBean).storeKey.Trim)
tmpTable.Add("positionLevel", Constant.DUMMYMAN_POSITION_SR)
tmpTable.Add("type", Constant.RELATION_TYPE_SELLIN)
dummymanList = readDataFromDB.selectSellinRelationByLevel(tmpTable)
'将SR信息保存在table中,以便gridview显示
For j = 0 To dummymanList.Count - 1 Step 1
tableRow("SR" & j + 1) = CType(dummymanList.Item(j), Object)(0).ToString.Trim
tableRow("SR" & j + 1 & "销售所占百分比") = CType(dummymanList.Item(j), Object)(1).ToString.Trim
Next j
If dummymanList.Count > 1 Then
tableRow("SR拆分区分") = Constant.SR_SPLIT_YES
Else
tableRow("SR拆分区分") = Constant.SR_SPLIT_NO
End If
'将数据行保存到table中
table.Rows.Add(tableRow)
Next i
'设定datagridview的数据源
Me.DataGridView1.DataSource = table
'隐藏行头
Me.DataGridView1.RowHeadersVisible = False
'返回错误flag值
Return hasErrorFlg
Catch ex As Exception
MsgBox("更新数据库处理 editDataForUpdate()出错: " & ex.Message)
Return True
End Try
End Function
但是在实际操作中,更多的情况是需要先对显示的数据库表内容进行编辑,甚至是多个表结合之后的结果需要显示.
这时候能够将表内容的编辑结构,放到DataTable中的DataRow中,
先设定DataRow的列项目,然后在一条条的将输入导入DataRow,最后将DataRow追加到DataTable中
这样就可以实现复杂内容在datagridview中显示了
1 窗口form中追加控件datagridview
2 窗口form程序中设定:
'整理数据并显示在gridview中
Private Function editDataAndShow()
'循环用变量
Dim i As Integer
Dim j As Integer
'门店信息List
Dim storeList As New ArrayList
'人员信息List
Dim dummymanList As New ArrayList
'返回错误flag值
Dim hasErrorFlg As Boolean = False
'临时用Hashtable
Dim tmpTable As New Hashtable
'view显示用table
Dim viewTable As New Hashtable
'DataTable
Dim table As New DataTable
'datatable中使用的datarow
Dim tableRow As DataRow
Try
'取得门店信息
storeList = readDataFromDB.selectSellinStore()
'gridview中需要显示的列,都要在DataTable中先定义
'此处定义的顺序, 即gridview显示的顺序
'门店信息
table.Columns.Add("门店key")
table.Columns.Add("门店类型")
table.Columns.Add("门店ID")
table.Columns.Add("门店名称(地址)")
table.Columns.Add("地理城市")
table.Columns.Add("地理大区")
table.Columns.Add("销售归属城市")
table.Columns.Add("销售归属大区")
table.Columns.Add("销售归属公司")
table.Columns.Add("渠道")
table.Columns.Add("大客户名称")
table.Columns.Add("客户详细名称")
'门店状态
table.Columns.Add("门店状态")
'人员信息
table.Columns.Add("SR1")
table.Columns.Add("SR1销售所占百分比")
table.Columns.Add("SR2")
table.Columns.Add("SR2销售所占百分比")
table.Columns.Add("SR3")
table.Columns.Add("SR3销售所占百分比")
table.Columns.Add("SR4")
table.Columns.Add("SR4销售所占百分比")
table.Columns.Add("SR5")
table.Columns.Add("SR5销售所占百分比")
table.Columns.Add("SR6")
table.Columns.Add("SR6销售所占百分比")
table.Columns.Add("SR7")
table.Columns.Add("SR7销售所占百分比")
table.Columns.Add("SR8")
table.Columns.Add("SR8销售所占百分比")
table.Columns.Add("SR9")
table.Columns.Add("SR9销售所占百分比")
table.Columns.Add("SR10")
table.Columns.Add("SR10销售所占百分比")
table.Columns.Add("SR11")
table.Columns.Add("SR11销售所占百分比")
table.Columns.Add("SR12")
table.Columns.Add("SR12销售所占百分比")
table.Columns.Add("SR13")
table.Columns.Add("SR13销售所占百分比")
table.Columns.Add("SR14")
table.Columns.Add("SR14销售所占百分比")
table.Columns.Add("SR15")
table.Columns.Add("SR15销售所占百分比")
table.Columns.Add("KAM")
table.Columns.Add("DSM")
'SR是否拆分
table.Columns.Add("SR拆分区分")
For i = 0 To storeList.Count - 1 Step 1
'清空Hashtable
tmpTable.Clear()
viewTable.Clear()
'将门店信息保存在table中,以便gridview显示
tableRow = table.NewRow
tableRow("门店key") = CType(storeList.Item(i), SellinStoreBean).storeKey.Trim
tableRow("门店类型") = CType(storeList.Item(i), SellinStoreBean).storeType.Trim
tableRow("门店ID") = CType(storeList.Item(i), SellinStoreBean).storeID.Trim
tableRow("门店名称(地址)") = CType(storeList.Item(i), SellinStoreBean).storeName.Trim
tableRow("地理城市") = CType(storeList.Item(i), SellinStoreBean).geoCity.Trim
tableRow("地理大区") = CType(storeList.Item(i), SellinStoreBean).geoRegion.Trim
tableRow("销售归属城市") = CType(storeList.Item(i), SellinStoreBean).salesCity.Trim
tableRow("销售归属大区") = CType(storeList.Item(i), SellinStoreBean).salesRegion.Trim
tableRow("销售归属公司") = CType(storeList.Item(i), SellinStoreBean).salesCompany.Trim
tableRow("渠道") = CType(storeList.Item(i), SellinStoreBean).channel.Trim
tableRow("大客户名称") = CType(storeList.Item(i), SellinStoreBean).cTotalName.Trim
tableRow("客户详细名称") = CType(storeList.Item(i), SellinStoreBean).cDetailName.Trim
tableRow("门店状态") = CType(storeList.Item(i), SellinStoreBean).status.Trim
'取得DSM
tmpTable.Add("storeKey", CType(storeList.Item(i), SellinStoreBean).storeKey.Trim)
tmpTable.Add("positionLevel", Constant.DUMMYMAN_POSITION_DSM)
tmpTable.Add("type", Constant.RELATION_TYPE_SELLIN)
dummymanList = readDataFromDB.selectSellinRelationByLevel(tmpTable)
'将DSM信息保存在table中,以便gridview显示(因为人员变动,DSM有可能为空,所以要追加判断)
If dummymanList.Count <> 0 Then
tableRow("DSM") = CType(dummymanList.Item(0), Object)(0).ToString.Trim
End If
'清空Hashtable
tmpTable.Clear()
dummymanList.Clear()
'取得KAM
tmpTable.Add("storeKey", CType(storeList.Item(i), SellinStoreBean).storeKey.Trim)
tmpTable.Add("positionLevel", Constant.DUMMYMAN_POSITION_KAM)
tmpTable.Add("type", Constant.RELATION_TYPE_SELLIN)
dummymanList = readDataFromDB.selectSellinRelationByLevel(tmpTable)
'将KAM信息保存在table中,以便gridview显示(因为KAM有可能为空,所以要追加判断)
If dummymanList.Count <> 0 Then
tableRow("KAM") = CType(dummymanList.Item(0), Object)(0).ToString.Trim
End If
'清空Hashtable
tmpTable.Clear()
dummymanList.Clear()
'取得SR
tmpTable.Add("storeKey", CType(storeList.Item(i), SellinStoreBean).storeKey.Trim)
tmpTable.Add("positionLevel", Constant.DUMMYMAN_POSITION_SR)
tmpTable.Add("type", Constant.RELATION_TYPE_SELLIN)
dummymanList = readDataFromDB.selectSellinRelationByLevel(tmpTable)
'将SR信息保存在table中,以便gridview显示
For j = 0 To dummymanList.Count - 1 Step 1
tableRow("SR" & j + 1) = CType(dummymanList.Item(j), Object)(0).ToString.Trim
tableRow("SR" & j + 1 & "销售所占百分比") = CType(dummymanList.Item(j), Object)(1).ToString.Trim
Next j
If dummymanList.Count > 1 Then
tableRow("SR拆分区分") = Constant.SR_SPLIT_YES
Else
tableRow("SR拆分区分") = Constant.SR_SPLIT_NO
End If
'将数据行保存到table中
table.Rows.Add(tableRow)
Next i
'设定datagridview的数据源
Me.DataGridView1.DataSource = table
'隐藏行头
Me.DataGridView1.RowHeadersVisible = False
'返回错误flag值
Return hasErrorFlg
Catch ex As Exception
MsgBox("更新数据库处理 editDataForUpdate()出错: " & ex.Message)
Return True
End Try
End Function
相关文章推荐
- vb.net 利用datagridview显示DB数据(亲自实践)
- 使用doublebuffered来解决VB.net中datagridview数据显示和滚动慢和卡顿的问题
- vb.net excel数据导入datagridview显示
- VB.NET中根据DataGridView中显示的数据条件数据行显示不同的颜色
- 【VB.NET机房重构】DataGridView数据显示
- ADO.NET之使用DataGridView控件显示从服务器上获取的数据
- 【转载】 VB.NET 复制粘贴EXCEL数据到DataGridView
- 在jdbc下利用Oracle的存储过程取得比较复杂的数据集合
- VB.NET之旅-机房收费系统个人重构DatagridView导出数据到Excel
- [VB.NET]同一个dataset可以绑定到不同datagridview里吗,并且每个datagridview显示内容不同
- [VB.NET]datagridview的单元格的值为0的时候想显示空,但是提交的时候,空的想转换为0,怎么做?
- Vb.net利用数据工厂建立(DBMS)数据操作模型
- VB.Net自己写的一个控件:ComboBox下拉列表中显示多列数据(可以绑定数据表)
- [VB.NET]如何使DataGridView中显示的内容不出现点点点(高手们帮帮忙,谢谢先)
- 利用BindingSource.Filter筛选数据,并显示在DataGridView上
- [转]VB.NET使用DataGridView分页显示
- vb.net的datagridview如何让表格根据表格数据来改变颜色,如值为1时表格为红色,2时为蓝色
- 利用ASP.NET DataGrid显示主次关系的数据
- [VB.NET]100分求:如何从数据库取出数据并生成表格显示数据?
- 【VB.NET】利用SharpZipLib压缩与解压文件夹中的所有文件、内存中动态压缩解压数据、内存中压缩与解压文本