在aspx.vb中使用Gridview(代码隐藏)

时间:2009-02-09 10:38:38

标签: asp.net gridview code-behind

我需要根据2个不同的数据源创建一个gridview:main和sub-cathegory。我需要列出如下:

Productinfo
   sub-product 1
   sub-product 2

Productinfo
   sub-product 1
   sub-product 2
   sub-product 3
   sub-product 4

等等......“productinfo”和“sub-product”都是动态的,因为两者的数量都可以变化,所以我必须在gridview中创建一个gridview,加上必要的过滤器

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

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

感谢。

4 个答案:

答案 0 :(得分: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()

aspx代码:

<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>

答案 1 :(得分: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个网格?

答案 2 :(得分:0)

希望你已经明白了这一点,但为了别人的利益,我发现了这一点。

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

其次,您要指定 数据表 的列,而不是 gridview ,因此您希望有AutoGenerateColumns="True"因此gridview将在生成列时从表中获取列名。

答案 3 :(得分:0)

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

  1. GridView in ASP.NET is not displaying with or without data
  2. Create DataTable dynamically and bind to GridView in ASP.Net
  3. 根据我的经验,以下步骤对我有用:

    • 在代码隐藏的Page_Load事件期间将GridView绑定到DataTable
    • 如果您只想在第一页加载
    • 上绑定,请检查IsPostBack属性 在GridView属性中
    • ,设置AutoGenerateColumns="True"