【问题标题】:ASP.Net GridView doesn't refreshASP.Net GridView 不刷新
【发布时间】:2011-04-13 12:07:40
【问题描述】:

我是 asp.net 编程的相对论新手,所以这个让我很难过。我手动创建了一个数据集并将其值设置为 GridView 控件的数据源,然后调用 Databind 方法,但它没有刷新。我重新创建了一个简单版本的我正在做的事情,以便有人可以告诉我我做错了什么。我没有包含主文件,因为我认为它不相关。

ASP 页面代码

<%@ Page Language="vb" MasterPageFile="~/MasterPage.master" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="TestGridView._Default" %>

更新价格请稍候。



<p>
    <asp:GridView ID="GV1" runat="server" AutoGenerateColumns="false">
    <Columns>
        <asp:BoundField DataField="VendorNumber" HeaderText="Vendor" />
        <asp:BoundField DataField="PartNumber" HeaderText="Part or Sku" />
        <asp:BoundField DataField="Message" HeaderText="Error Message" />
    </Columns>
    </asp:GridView>
</p>
<br />
<br />
<%
    If Not Page.IsPostBack Then
        Response.Write(Me.UpdatePricing())

    End If
%>    

代码背后的代码

Public Class _Default
Inherits System.Web.UI.Page

Public Function UpdatePricing() As String
    Dim showerrors As Boolean = False

    Dim Head As New PnAHead()

    Dim ds As DataSet = Head.GetErrorDataset()

    If (ds.Tables("Errors").Rows.Count > 0) Then
        showerrors = True
    End If

    If showerrors Then
        GV1.DataSource = ds
        GV1.DataBind()
    End If

    Return "Sales Line Number has been updated."
End Function

结束类

创建数据集的类

Public Class PnAHead

Public Function GetErrorDataset() As DataSet
    Dim dstemp = New DataSet()
    Dim tbl As DataTable = dstemp.Tables.Add("Errors")
    Dim col As DataColumn = tbl.Columns.Add("VendorNumber", System.Type.GetType("System.String"))
    col.MaxLength = 20

    col = tbl.Columns.Add("PartNumber", System.Type.GetType("System.String"))
    col.MaxLength = 50

    col = tbl.Columns.Add("Message", System.Type.GetType("System.String"))
    col.MaxLength = 500

    Dim row As DataRow

    row = tbl.NewRow()

    row("VendorNumber") = "Vendor 1"
    row("PartNumber") = "Part Number 1"
    row("Message") = "Message for Part 1"

    tbl.Rows.Add(row)

    row = tbl.NewRow()

    row("VendorNumber") = "Vendor 2"
    row("PartNumber") = "Part Number 2"
    row("Message") = "Message for Part 2"

    tbl.Rows.Add(row)

    Return dstemp
End Function

结束类

【问题讨论】:

    标签: asp.net vb.net


    【解决方案1】:

    你为什么不调试你的代码并检查数据集是否有数据,你可以通过在设置数据源的行上添加一个断点来做到这一点,你可以进入数据集的属性。 .你会发现一个放大镜图标..点击它,会打开一个弹出窗口,显示检索到的数据集。

    【讨论】:

    • 作为我的故障排除的一部分,我已经验证了数据在数据集中。我只是不明白为什么它不令人耳目一新。
    【解决方案2】:

    您需要将更新定价的调用添加到 Page_Load 事件中。您还可以删除 Response.Write()。

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
      If Not Page.IsPostBack Then
          Me.UpdatePricing()
      End If
    End Sub
    

    您可以在 .aspx 页面中通过将 Page_Load 事件包装在脚本标签中来执行此操作,如下所示:

    <script type="text/VB" runat="server">
    
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not Page.IsPostBack Then
            Me.UpdatePricing()
        End If
    End Sub
    
    </script>
    

    或者您可以将 Page_Load 事件添加到您的代码后面,我认为这是更可取的,因为您已经有一个代码后面的页面。

    【讨论】:

    • 谢谢你,这是解决方案。我来自 Windows 编程世界,我可以随时更新 datagridview 并且它总是有效的。您知道为什么必须从 Page_Load 事件中调用它才能使其工作吗?
    猜你喜欢
    • 2011-01-16
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    • 2012-12-26
    • 2023-04-01
    • 1970-01-01
    • 2017-06-08
    • 2017-06-13
    相关资源
    最近更新 更多