Использование Gridview в aspx.vb (код позади) - PullRequest
2 голосов
/ 09 февраля 2009

Мне нужно создать сетку, основанную на 2 разных источниках данных: основной и подкатегории. И мне нужно перечислить их, как показано ниже:

Productinfo
   sub-product 1
   sub-product 2

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

И т.д. ... дело в том, что и productinfo, и sub-product являются динамическими, так как их число может варьироваться, поэтому мне придется создать представление grid внутри gridview, а также необходимые фильтры .

По этой причине я подумал, что лучше всего делать все это в code-behind, но я не могу понять, как использовать класс gridview в codebehind и связать его так, чтобы он действительно что-то отображал на главной странице aspx.

По сути, я прошу простой пример того, как, когда у вас нет ничего, кроме на странице aspx, вы можете добавлять к нему компоненты и показывать их из кода (vb). )

Спасибо.

Ответы [ 4 ]

2 голосов
/ 18 августа 2009

код 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>
0 голосов
/ 28 августа 2015

Столкнувшись с подобной проблемой, я нашел эти статьи очень полезными:

  1. GridView в ASP.NET не отображается с данными или без данных
  2. Создание DataTable динамически и привязка к GridView в ASP.Net

Исходя из того, что я узнал, у меня сработали следующие шаги:

  • привязывает ваш GridView к DataTable во время события Page_Load вашего кода
  • отметьте свойство IsPostBack, если хотите связывать только при загрузке первой страницы
  • в свойствах GridView, установите AutoGenerateColumns="True"
0 голосов
/ 08 марта 2009

Надеюсь, вы уже поняли это, но для блага других вот что я нашел.

Во-первых, ASP.NET вообще не отображает сетку, если нет никаких данных ... раздражает, но что вы можете сделать. (На самом деле, возможно, вы можете что-то сделать, но я не знаю, что это!). Добавьте новую строку в таблицу данных, и вы станете на шаг ближе.

Во-вторых, вы указываете столбцы для вашей таблицы данных , а не gridview , поэтому вы хотите иметь AutoGenerateColumns="True" поэтому gridview выберет имена столбцов из таблицы при создании своих столбцов.

0 голосов
/ 09 февраля 2009

Я не уверен, что понимаю ваш вопрос? ..но вы просто хотите привязать данные к вашей сетке?

Я бы правильно создал вид сетки в коде позади так:

Dim gw As GridView = New GridView()

Или вам нужно добавить Id и runat = "server" в ваш asp: GridView, чтобы иметь возможность использовать его в коде позади.

А когда вам нужно добавить компонент в ваше сеточное представление, вам нужно привязать источник данных, например, общий список.

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

Если вы хотите, чтобы ваши основные и подчиненные выстроились в линию, как вы показываете, я бы использовал 2 сетки?

...