帮酷LOGO
  • 显示原文与译文双语对照的内容
文章标签:Datagrid  Vertica  form  for  WEB  数据  控制  Formatted  


介绍

在浏览一个控件以以垂直方式显示数据时,我发现了一些描述如何旋转数据的文章。 基本上,几个文章描述如何使用 DataGridAutoGenerateColumns 函数来允许一个 DataTable的行水平重复,而不是垂直地重复。 ( 一个很好的例子:在 DataGrid 中显示垂直行。)

虽然这种方法对于某些实例非常有效,但它并没有对输出的格式进行很大的控制。 所以,我做了第一个定制网页控件- 垂直网格。 由于 DataGrid的限制,我实际上基于 Table 管理并从头创建 table。 这样,不仅仅是在 DataTable 中翻转行,它只是在HTML输出中将列数据呈现为行。

标准数据网格

这是一个非常基本的例子。

姓名邮件电话
杰克筹款的计划是可行的。jack@joe.com456-1234
吉尔都18岁了,汤姆。Jill@joe.com123-4567
吉姆Jim@joe.com867-5309

垂直数据网格

姓名杰克筹款的计划是可行的。吉尔都18岁了,汤姆。吉姆
邮件jack@joe.comJill@joe.comJim@joe.com
电话456-1234123-4567867-5309

代码

控件的关键是重写 table的Render 方法。 然后,我们可以使用 table的基本格式,并将自己的功能添加到它。 我没有实现更多的属性,但是可以随意添加。 我主要使用CSS的所有格式,因这里这是这个 #1 优先级。 我还增加了对列进行原始样式的功能,但是它正好像你对CSS的格式一样。 style="元素:值;" 这里代码将包含在一个自定义的web服务对象中,该对象将对对象执行。

ProtectedOverridesSub Render(ByVal output As System.Web.UI.HtmlTextWriter)
 'set up some temp variablesDim i, j AsInt16Dim sTmp AsString = ""'for each column in the dataset, we're going to make a row in the outputFor i = 0To _DataSource.Columns.Count - 1 _text &= vbTab & "<tr>" & vbCr
 'if the ShowHeader property is True then we're displaying the column namesIf _ShowHeader Then sTmp = ""'if the HeaderStyle is set, then include that in the tdIf _HeaderStyle <> ""Then sTmp = " style='" & _HeaderStyle & "'"EndIf'if the _HeaderCssClass is set, then include that in the tdIf _HeaderCssClass <> ""Then sTmp &= " class='" & _HeaderCssClass & "'"EndIf _text &= vbTab & vbTab & "<td" & sTmp & ">" & _
 _DataSource.Columns(i).ColumnName & "</td>" & vbCr
 EndIf'then add each data item for that column to the table's rowFor j = 0To _DataSource.Rows.Count - 1 sTmp = ""'if the AltColumnCssClass is set 'and we're on an odd row, include it'otherwise, just use the standard CssClass if it's setIf (_AltColumnStyle <> ""Or _
 _AltColumnCssClass <> "") And j Mod2 = 1ThenIf _AltColumnStyle <> ""Then sTmp = " style='" & _AltColumnStyle & "'"EndIfIf _AltColumnCssClass <> ""Then sTmp &= " class='" & _AltColumnCssClass & "'"EndIfElseIf _ColumnStyle <> ""Then sTmp = " style='" & _ColumnStyle & "'"EndIfIf _ColumnCssClass <> ""Then sTmp &= " class='" & _ColumnCssClass & "'"EndIfEndIf'put the data in there _text &= vbTab & vbTab & "<td" & sTmp & ">" & _
 _DataSource.Rows(j).Item(i) & "</td>" & vbCr
 Next'close the row _text &= vbTab & "</tr>" & vbCr
 Next'then figure out the styles for the table as inherited by the table class sTmp = ""If Style.Count <> 0ThenDim item AsStringForEach item In Style.Keys
 sTmp &= item & ":" & Style.Item(item) & ";"Next sTmp = " style=""" & sTmp & """"EndIfIf CssClass <> ""Then sTmp &= " class='" & CssClass & "'"EndIfIf BackColor.Name <> ""Then sTmp &= " bgcolor=""" & BackColor.Name & """"EndIfIf BorderColor.Name <> ""Then sTmp &= " BorderColor=""" & BorderColor.Name & """"EndIfIfNot IsDBNull(BorderWidth) Then sTmp &= " border=""" & BorderWidth.ToString & """"EndIfIfNot IsDBNull(CellPadding) Then sTmp &= " CellPadding=""" & CellPadding.ToString & """"EndIfIfNot IsDBNull(CellSpacing) Then sTmp &= " CellSpacing=""" & CellSpacing.ToString & """"EndIf'wrap the table tag around the rest of the HTML code _text = vbCr & "<table" & sTmp & ">" & vbCr & _text & "</table>" & vbCr
 'render the table output.Write([Text])EndSub

由于我已经在下载中包含了 DLL,所以你还可以将对象添加到 Visual Studio. NET 工具箱中。 经过很多困难和麻烦,我发现在你的页面中添加自定义控件是最简单的方法。

然后,要绑定数据并按你喜欢的方式格式化 table,你可以简单地执行如下操作:

Dim dt As New DataTable()
dt = GetDBTable("SELECT * FROM tbl")'replace this with whatever data you want
VerticalDataGrid1.DataSource = dt
'then you can set the style and such here if you likeoron the HTML page
VerticalDataGrid1.ShowHeader = True
VerticalDataGrid1.HeaderStyle = "BACKGROUND-COLOR: SILVER;"VerticalDataGrid1.BackColor = Color.White
VerticalDataGrid1.CellPadding = 2VerticalDataGrid1.DataBind()

从那里开始,由你自己决定。



文章标签:WEB  数据  控制  for  form  格式  Datagrid  Vertica  

Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语