我是asp.net编程的新相对论,所以这个让我难过。我手动创建了一个数据集并将其值设置为GridView控件的Datasource,然后调用Databind方法,但它没有刷新。我重新创建了一个我正在做的简单版本,所以有人可以告诉我我做错了什么。我没有包含Master文件,因为我没有看到它是相关的。
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
结束班
答案 0 :(得分: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事件添加到您的代码后面,我认为这是更好的,因为您已经有一个代码隐藏页面。
答案 1 :(得分:0)
为什么不调试代码并检查数据集是否有数据,你可以通过在设置数据源的行上添加断点来实现,你可以进入数据集的属性。 。你会找到一个放大镜图标。点击它,会弹出一个弹出窗口,显示检索到的数据集。