0

数据表返回正确数量的行/记录。但由于某种原因,我无法让我的 GridView 渲染..根本没有显示......

编辑: GridView 返回“RowErorrs”和“有错误”列。但不是我的数据。

Dim ConnString As String = System.Configuration.ConfigurationManager.ConnectionStrings("oakfratintdbConnectionString").ConnectionString
Dim Conn As New SqlConnection(ConnString)
Dim cmd As New SqlCommand("SELECT * FROM [OFCInterments]", Conn)

Dim DA As New SqlDataAdapter(cmd)
Dim DT As New DataTable
'WHERE ([FirstName] = @FirstName)
cmd.Parameters.AddWithValue("@FirstName", "Mike")


Try
    Conn.Open()
    DA.SelectCommand = cmd
    DA.Fill(DT)
    GridView1.DataSource = DT
    GridView1.DataBind()

    If DT.Rows.Count > 0 Then
        Dim NoResultsText As String = DT.Rows.Count.ToString + " records found."
        txtStatys.Text = NoResultsText
        txtStatys.Visible = True


    End If


Catch ex As Exception
    Throw ex
Finally
    Conn.Close()
    DA.Dispose()
    Conn.Dispose()


End Try
4

1 回答 1

2

GridView 返回“RowErorrs”和“Has Errors”列。但不是我的数据。

那不是 的属性,GridView而是 的属性DataTable

DataTable.HasErrors财产

您可以使用所有行错误DataTable.GetErrors()来检索 a 。DataTable检查RowError每个属性,DataRow您就会知道异常的原因。您可以在调试器quick-watch-window中完成这一切。


您应该考虑的几点:

GridView 没有显示,一些可能的原因:

  • GridView 是否完全可见(以及它的所有父级,因为它继承了该属性)?
  • 您是否注册了该RowDataBound事件和未捕获的异常?

一般建议:

  • 不要使用Catch块来重新抛出异常(即使Throw单独使用会更好,因为它会保留堆栈跟踪)。相反,不要抓住它或用它做一些有用的事情(fe logging)。
  • 使用Using-statement处理您的 ADO.NET 对象,如连接(隐式关闭它)
于 2012-11-13T22:40:41.460 回答