【问题标题】:sample datatable bind to gridview not working in vs2019- 2017示例数据表绑定到 gridview 在 vs2019-2017 中不起作用
【发布时间】:2019-09-22 05:47:45
【问题描述】:

在 ASP.Net 中创建 DataTable 并绑定到 GridView NOR 在 vs2019 中工作

大家好, 我的目标是在 Gridview 中呈现一些生成的数据。 可以通过首先创建一个数据表然后将它与一个网格视图绑定来实现这一点。 我在网上找了几个例子,用 vs2017 和 vs2019 测试了一下。 没有一个例子有效,即使是下面显示的最简单的例子。 为什么那些错误背后的代码? 我该如何解决这个问题? 希望有人知道解决方案。

我确实从以下位置下载了示例: https://www.aspsnippets.com/Articles/Dynamically-create-DataTable-and-bind-to-GridView-in-ASPNet.aspx

   HTML:=======================================

 <form id="form1"runat="server">

<asp:GridView ID="GridView1" HeaderStyle-BackColor="#3AC0F2" HeaderStyle-    ForeColor="White"
runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="Id" HeaderText="Id" ItemStyle-Width="30"/>
<asp:BoundField D ataField="Name" HeaderText="Name" ItemStyle-       Width="150"/>
<asp:BoundField DataField="Country" HeaderText="Country" ItemStyle-Width ="150"/>
</Columns>
</asp:GridView>
</form>

    Co de behind =======================================
OptionExplici tOn
OptionStrict Off

Imports System.Data

Public Class WebForm2
Inherits System.Web.UI.Page

Protected Sub Page_Load(sender AsObject, e AsEventArgs) HandlesMe.Load
Dim dt As New DataTable()


dt.Columns.AddRange(New DataColumn() {New DataColumn("Id", GetType  (Integer)), New DataColumn("Name", GetType(String)), New DataColumn   ("Country", GetType(String))})

dt.Rows.Add(1, "John Hammond", "United States")
dt.Rows.Add(2, "Mudassar Khan", "India")
dt.Rows.Add(3, "Suzanne Mathews", "France")
dt.Rows.Add(4, "Robert Schidner", "Russia")

GridView1.DataSource = dt
GridView1.DataBind()
EndSub


EndClass

ERRPRS ========================================

严重性代码描述项目文件行抑制状态 错误 BC30451 'GridView1' 未声明。由于可能无法访问 到它的保护水平。 Algemeen 测试图 S:\P2 S VSlab\Algemeen 测试图表\Algemeen 测试图表\Gridtest 1.aspx.vb 18 活动 错误 BC30451 'GridView1' 未声明。由于可能无法访问 到它的保护水平。 Algemeentest 图表 S:\P2 S VSlab\Algemeen 测试图表\Algemeen 测试图表\Gridtest 1.aspx.vb 19 活动

我确实从以下位置下载了示例: https://www.aspsnippets.com/Articles/Dynamically-create-DataTable-and-bind-to-GridView-in-ASPNet.aspx

【问题讨论】:

  • "OptionStrict Off" 哦不! Option Strict 应该几乎总是打开。

标签: vb.net


【解决方案1】:

你所拥有的应该可以工作。但是你确实有这个:

ForeColor="白色"

因此,将数据的文本设置为白色,而您的网页是白色的,因此您看不到数据。我会删除以上内容。

编辑

HTML页面(这是asp.net + web forms,对吗???)是这样的:

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm1.aspx.vb" Inherits="WebGridTest.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:Button ID="Button1" runat="server" Text="Button" Width="75px" />
            <br />
            <br />
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
                <Columns>
                    <asp:BoundField DataField="ID" HeaderText="ID" />
                    <asp:BoundField DataField="Name" HeaderText="Name" />
                    <asp:BoundField DataField="Country" HeaderText="Country" />
                </Columns>
            </asp:GridView>
            <br />
        </div>
    </form>
</body>
</html>

而VB代码是:

Public Class WebForm1
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        If Me.IsPostBack = False Then

            Dim dt As New DataTable()

            dt.Columns.AddRange({New DataColumn("Id", GetType(Integer)),
                                New DataColumn("Name", GetType(String)),
                                New DataColumn("Country", GetType(String))})

            dt.Rows.Add(1, "John Hammond", "United States")
            dt.Rows.Add(2, "Mudassar Khan", "India")
            dt.Rows.Add(3, "Suzanne Mathews", "France")
            dt.Rows.Add(4, "Robert Schidner", "Russia")

            GridView1.DataSource = dt
            GridView1.DataBind()

        End If

    End Sub

End Class

【讨论】:

  • HeaderStyle-BackColor="#3AC0F2" HeaderStyle-ForeColor="White" 工作正常。它将列标题的背景设置为宜人的蓝色和白色文本。
  • 好的。上面的代码+标记工作得很好。所以也许像表单 ID 这样的东西是错误的。我会添加一个新的 Web 表单页面(Web 表单页面,不是 HTML 页面,也不是 MVC 页面)。请记住,您发布的示例代码是 asp.net 页面,而不是 mvc 页面,也不是 html 页面。因此,要使其正常工作,请尝试添加一个新的“网络表单”,然后再试一次。让 VS 为该页面生成基本标记,并且仅在您拥有的 gridview 部分中剪切 + 粘贴 - 并粘贴到表单标签内。您还注意到您的示例不起作用 - 还应注意出现的任何错误消息。
【解决方案2】:

问题已解决。 我总是在一个我总是用来尝试新工具的测试项目中测试这个例子。 我现在已经在另一个项目中尝试了这个例子,现在它可以工作了! 我不知道为什么,也许它与“tableadapror”有关,因为这是这些项目之间的唯一区别。 很迷茫。 非常感谢您的回答,很抱歉打扰您。 来自神奇泰国的亲切问候。

【讨论】:

    猜你喜欢
    • 2012-09-02
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 2013-04-10
    • 2013-12-16
    • 1970-01-01
    • 2019-02-14
    • 1970-01-01
    相关资源
    最近更新 更多