2

我需要基于 2 个不同的数据源创建一个网格视图:主类和子类。我需要像下面这样列出它们:

产品信息
   子产品 1
   子产品 2

产品信息
   子产品 1
   子产品 2
   子产品 3
   子产品 4

等等......问题是“产品信息”和“子产品”都是动态的,因为两者的数量都可以变化,所以我必须在网格视图中创建一个网格视图,加上必要的过滤器。

出于这个原因,我认为最好在代码隐藏中完成所有操作,但我无法理解如何在代码隐藏中使用 gridview-class 并绑定它,以便它实际上在主 aspx 页面中显示某些内容。

基本上我要的是一个简单的例子,当你在 aspx -page 中除了 <asp:GridView/> 什么都没有时,你可以从代码隐藏(vb)中添加组件并显示它吗?

谢谢。

4

4 回答 4

2

VB代码:

Dim mydatatable As New DataTable
' Create columns
mydatatable.Columns.Add("field_a", Type.GetType("System.String"))
mydatatable.Columns.Add("field_b", Type.GetType("System.String"))
' Declare row
Dim myrow As DataRow
' create new row
myrow = mydatatable.NewRow
myrow("field_a") = "filed a row 1"
myrow("field_b") = "filed b row 1"
mydatatable.Rows.Add(myrow)

GridView1.datasource = mydatatable
gridview1.databind()

asp代码:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true" EmptyDataText="if im not at my desk im at the balcony contemplating suicide" >
<Columns></Columns>
</asp:GridView>
于 2009-08-18T13:17:03.727 回答
0

希望您已经弄清楚了这一点,但是为了其他人的利益,这就是我发现的。

首先,如果没有任何数据,ASP.NET 根本不会呈现 gridview……很烦人,但你能做什么。(实际上,您可能可以做一些事情,但我不知道它是什么!)。向您的数据表添加一个新行,您将更近一步。

其次,您正在为datatable指定列,而不是gridview,因此您希望AutoGenerateColumns="True"gridview 在生成列时从表中提取列名。

于 2009-03-07T22:15:46.850 回答
0

我不确定我是否理解你的问题?..但你只是想对你的网格进行数据绑定吗?

我会像这样在代码隐藏中正确创建gridview:

Dim gw As GridView = New GridView()

或者您需要向您的 asp:GridView 添加一个 Id 和 runat="server" 以便能够在代码隐藏中使用它。

当您需要将组件放入您的gridview 时,您需要绑定一个数据源,例如一个通用列表。

Dim list As List(Of String) = New List(Of String)
gw.DataSource = list
gw.DataBind()

如果你想让你的主要和次要像你展示的那样排列,我会使用 2 个网格?

于 2009-02-09T11:44:47.133 回答
0

面对类似的问题,我发现这些文章非常有帮助:

  1. ASP.NET 中的 GridView 不显示有或没有数据
  2. 在 ASP.Net 中动态创建 DataTable 并绑定到 GridView

根据我所学到的,以下步骤对我有用:

  • Page_Load在代码隐藏事件期间将您的 GridView 绑定到 DataTable
  • IsPostBack如果您只想在第一页加载时绑定,请检查属性
  • 在 GridView 属性中,设置AutoGenerateColumns="True"
于 2015-08-28T19:23:31.937 回答