我需要根据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)中添加组件并显示它吗?
感谢。
答案 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)
面对类似的问题,我发现这些文章非常有用:
根据我的经验,以下步骤对我有用:
Page_Load
事件期间将GridView绑定到DataTable IsPostBack
属性
在GridView属性中AutoGenerateColumns="True"