自己改写完毕,代码如下: Imports System Imports System.Collections Imports System.ComponentModel Imports System.Data Imports System.Data.OleDb Imports System.Drawing Imports System.Web Imports System.Web.SessionState Imports System.Web.UI Imports System.Web.UI.WebControls Imports System.Web.UI.HtmlControls Public Class UltraGrid Inherits System.Web.UI.Page Protected gridRow As System.Web.UI.HtmlControls.HtmlGenericControl Protected RowItem As System.Web.UI.WebControls.Literal Protected coolUltraGrid1 As System.Web.UI.HtmlControls.HtmlGenericControl#Region " Web 窗体设计器生成的代码 " '该调用是 Web 窗体设计器所必需的。 <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() End Sub '注意: 以下占位符声明是 Web 窗体设计器所必需的。 '不要删除或移动它。 Private designerPlaceholderDeclaration As System.Object Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init 'CODEGEN: 此方法调用是 Web 窗体设计器所必需的 '不要使用代码编辑器修改它。 InitializeComponent() End Sub#End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load '在此处放置初始化页的用户代码 coolUltraGrid1.Attributes.Add("class", "coolUltraGrid") coolUltraGrid1.Attributes.Add("style", "WIDTH: 100%; HEIGHT: 400") coolUltraGrid1.Attributes.Add("borderStyle", "2") coolUltraGrid1.Attributes.Add("altRowColor", "oldLace") coolUltraGrid1.Attributes.Add("selectionStyle", "1") '请根据你的数据库的设置,修改这里的数据库连接字符串和查询语句。其它不要修改。 Dim cn As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Inetpub\wwwroot\oa_part2\SDATA\backoutOA.mdb") cn.Open() Dim sqlstring As String = "SELECT BACKOUT_RS.BOID As 拆迁编号,BACKOUT_RS.BOTIME As 拆迁日期,BACKOUT_RS.BOADDRESS As 拆迁地址 From BACKOUT_Rs ORDER BY BOID" Dim cmd As OleDbCommand = New OleDbCommand(sqlstring, cn) Dim dr As OleDbDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection) '组合表头 Dim FieldNumber As Integer = dr.FieldCount Dim ColWidth As Integer = 0 Dim Tmp As Integer = 0 If FieldNumber = 0 Then Response.End() End If ColWidth = CInt(100 / FieldNumber) Dim TableHeader As String = "" Dim i As Integer For i = 0 To FieldNumber If dr.Read() Then If i = FieldNumber - 1 Then TableHeader += "<span width='" & (100 - Tmp).ToString() & "%'>" & dr.GetName(i).ToString() & "</span>" Else TableHeader += "<span width='" & ColWidth.ToString() & "%'>" & dr.GetName(i).ToString() & "</span>" End If Tmp += ColWidth End If Next gridRow.InnerHtml = TableHeader Dim RowNumber As Integer = 1 TableHeader = "<div class='gridBody'>" While dr.Read() TableHeader += "<div class='gridRow' id='row" + RowNumber.ToString() + "'>" Dim j As Integer For j = 0 To FieldNumber TableHeader += "<span>" & dr.GetValue(i).ToString() & "</span>" Next TableHeader += "</div>" RowNumber = RowNumber + 1 End While TableHeader += "</div>" RowItem.Text = TableHeader cn.Close() End SubEnd Class但是还是出现问题: 索引超出了数组界限。 说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.IndexOutOfRangeException: 索引超出了数组界限。源错误: 行 73: TableHeader += "<span width='" & (100 - Tmp).ToString() & "%'>" & dr.GetName(i).ToString() & "</span>" 行 74: Else 行 75: TableHeader += "<span width='" & ColWidth.ToString() & "%'>" & dr.GetName(i).ToString() & "</span>" 行 76: End If 行 77: Tmp += ColWidth
Imports System
Imports System.Collections
Imports System.ComponentModel
Imports System.Data
Imports System.Data.OleDb
Imports System.Drawing
Imports System.Web
Imports System.Web.SessionState
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.HtmlControls
Public Class UltraGrid
Inherits System.Web.UI.Page
Protected gridRow As System.Web.UI.HtmlControls.HtmlGenericControl
Protected RowItem As System.Web.UI.WebControls.Literal
Protected coolUltraGrid1 As System.Web.UI.HtmlControls.HtmlGenericControl#Region " Web 窗体设计器生成的代码 " '该调用是 Web 窗体设计器所必需的。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() End Sub '注意: 以下占位符声明是 Web 窗体设计器所必需的。
'不要删除或移动它。
Private designerPlaceholderDeclaration As System.Object Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
'不要使用代码编辑器修改它。
InitializeComponent()
End Sub#End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load '在此处放置初始化页的用户代码 coolUltraGrid1.Attributes.Add("class", "coolUltraGrid")
coolUltraGrid1.Attributes.Add("style", "WIDTH: 100%; HEIGHT: 400")
coolUltraGrid1.Attributes.Add("borderStyle", "2")
coolUltraGrid1.Attributes.Add("altRowColor", "oldLace")
coolUltraGrid1.Attributes.Add("selectionStyle", "1") '请根据你的数据库的设置,修改这里的数据库连接字符串和查询语句。其它不要修改。
Dim cn As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Inetpub\wwwroot\oa_part2\SDATA\backoutOA.mdb")
cn.Open()
Dim sqlstring As String = "SELECT BACKOUT_RS.BOID As 拆迁编号,BACKOUT_RS.BOTIME As 拆迁日期,BACKOUT_RS.BOADDRESS As 拆迁地址 From BACKOUT_Rs ORDER BY BOID"
Dim cmd As OleDbCommand = New OleDbCommand(sqlstring, cn)
Dim dr As OleDbDataReader
dr = cmd.ExecuteReader(CommandBehavior.CloseConnection) '组合表头
Dim FieldNumber As Integer = dr.FieldCount
Dim ColWidth As Integer = 0
Dim Tmp As Integer = 0 If FieldNumber = 0 Then
Response.End()
End If ColWidth = CInt(100 / FieldNumber)
Dim TableHeader As String = "" Dim i As Integer
For i = 0 To FieldNumber
If dr.Read() Then
If i = FieldNumber - 1 Then
TableHeader += "<span width='" & (100 - Tmp).ToString() & "%'>" & dr.GetName(i).ToString() & "</span>"
Else
TableHeader += "<span width='" & ColWidth.ToString() & "%'>" & dr.GetName(i).ToString() & "</span>"
End If
Tmp += ColWidth
End If
Next
gridRow.InnerHtml = TableHeader Dim RowNumber As Integer = 1 TableHeader = "<div class='gridBody'>" While dr.Read()
TableHeader += "<div class='gridRow' id='row" + RowNumber.ToString() + "'>"
Dim j As Integer
For j = 0 To FieldNumber
TableHeader += "<span>" & dr.GetValue(i).ToString() & "</span>"
Next
TableHeader += "</div>"
RowNumber = RowNumber + 1
End While TableHeader += "</div>"
RowItem.Text = TableHeader
cn.Close()
End SubEnd Class但是还是出现问题:
索引超出了数组界限。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.IndexOutOfRangeException: 索引超出了数组界限。源错误:
行 73: TableHeader += "<span width='" & (100 - Tmp).ToString() & "%'>" & dr.GetName(i).ToString() & "</span>"
行 74: Else
行 75: TableHeader += "<span width='" & ColWidth.ToString() & "%'>" & dr.GetName(i).ToString() & "</span>"
行 76: End If
行 77: Tmp += ColWidth
想不通,我也只取了三个字段,为何会数组报错?请指教
但是现在还是很郁闷,因为没有办法看到效果,页面是出来了,数据是出来了,但是没有任何效果,就是光秃秃的白页面上面几个字,是不是我还忽漏了什么?