создание раскрывающегося списка в заголовке сетки при заполнении данных столбца из листа excel

Мне нужно создать gridview, который

  1. заполняет свой столбец данными из листа Excel и
  2. для каждого столбца в представлении сетки заголовок должен содержать раскрывающийся список с элементами списка, такими как телефон, имя, цена, которые пользователь выберет и установит в качестве заголовка для конкретного столбца.

Я импортировал данные в gridview, но я не могу создать раскрывающийся список в gridview. Если я попытаюсь создать раскрывающийся список на странице дизайнера, он просто создаст раскрывающийся список в заголовке gridview, но не заполнит данные. Итак, как я могу создать раскрывающийся список в заголовке gridview при заполнении данных столбца из листа excel. Пожалуйста помоги.

код, который я использовал для заполнения данных в gridview,

Dim con As String = ""
    Select Case Extension
        Case ".xls"
            'Excel 97-03
            con=ConfigurationManager.ConnectionStrings("Excel03ConString").ConnectionString()
            Exit Select
        Case ".xlsx"
            'Excel 07
            con =ConfigurationManager.ConnectionStrings("Excel07ConString").ConnectionString()
            Exit Select
    End Select
    con = String.Format(con,Path)
    Dim connExcel As New OleDbConnection(con)
    Dim str As String = "SELECT * From [Sheets$]"
    Dim cmdExcel As New OleDbCommand(str, connExcel)
    Dim da As New OleDbDataAdapter(cmdExcel)
    Dim dset As New DataSet()
    da.Fill(dset, "Tabledata")
    Dim dtable As DataTable = ds.Tables(0)
    GridView1.DataSource = dset.Tables(0).DefaultView
    GridView1.DataBind()

и код для создания выпадающего списка

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
            <Columns>             
                <asp:TemplateField>
                    <HeaderTemplate>
                        <asp:DropDownList ID="DropDownList1" runat="server"   AutoPostBack="True">
                            <asp:ListItem Text="name " Value="Description of Goods" />
                            <asp:ListItem Text="telephone" Value="Count" />
                            <asp:ListItem Text="price" Value="Weight" />
                            <asp:ListItem Text="Value" Value="Value" />
                        </asp:DropDownList>
                    </HeaderTemplate>

person s s    schedule 21.11.2011    source источник


Ответы (2)


Убедитесь, что ваш набор данных или таблица данных не пусты. Если нет строк, ничего не появится. Вот я сделал небольшой тест и в шапке появился Ddl. Просто запустите пример как есть на новой странице.

HTML

<asp:GridView ID="GridView1" runat="server">
      <Columns>
      <asp:TemplateField>
      <HeaderTemplate>

        <asp:DropDownList ID="DropDownList1" runat="server">
        <asp:ListItem Text="name " Value="Description of Goods" />
                            <asp:ListItem Text="telephone" Value="Count" />
                            <asp:ListItem Text="price" Value="Weight" />
                            <asp:ListItem Text="Value" Value="Value" />
        </asp:DropDownList>
      </HeaderTemplate>
      <ItemTemplate>
        <asp:Label ID="Label1" runat="server" Text='<%# Eval("TestItem") %>'></asp:Label>
      </ItemTemplate>
      </asp:TemplateField>
      </Columns>
      </asp:GridView>

VB

Public Class DllInGvHeader
  Inherits System.Web.UI.Page

  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not Page.IsPostBack Then
      Dim tList As New List(Of Test)
      Dim t As New Test
      t.TestItem = 1
      tList.Add(t)
      t.TestItem = 2
      tList.Add(t)
      GridView1.DataSource = tList
      GridView1.DataBind()
    End If
  End Sub

End Class

Public Class Test
  Public Property TestItem As String
End Class
person MindLoggedOut    schedule 21.11.2011
comment
Спасибо за ваш ответ. я проверил набор данных и таблицу данных, и они не пусты. Итак, как я могу привязать столбцы из таблицы данных к сетке? Приведенный выше HTML-код создает раскрывающийся список, но не должен связывать значение из таблицы данных, а не из testitem, как вы упомянули (Text='‹%# Eval(TestItem)). Я не понимаю использование testitem. в любом случае я могу привязать данные к шаблону элемента из самого источника данных?. - person s s; 21.11.2011
comment
Несколько вещей. 1. Убедитесь, что для AutoGenerateColumns установлено значение True в Gridview. 2. В вашем коде Dim dtable As DataTable = ds.Tables(0) следует заменить на Dim dtable As DataTable = dset.Tables(0), который представляет собой набор данных, который вы заполняете. Кроме того, Gridview автоматически покажет все столбцы, если для параметра AutoGenerateColumns установлено значение True, поэтому, если ваш набор данных не пуст, что-то появится. Также вам не нужно использовать defaultView, в качестве источника данных подойдет только dset.Tables(0). Как только вы сможете просмотреть gridview, обратите внимание на все имена заголовков столбцов, которые можно связать с помощью Eval. - person MindLoggedOut; 22.11.2011

Несколько вещей. 1. Убедитесь, что для AutoGenerateColumns установлено значение «True» в Gridview. 2. В вашем коде "Dim dtable As DataTable = ds.Tables(0)" следует заменить на "Dim dtable As DataTable = dset.Tables(0)", который представляет собой набор данных, который вы заполняете.

Кроме того, Gridview автоматически покажет все столбцы, если для параметра AutoGenerateColumns установлено значение True, поэтому, если ваш набор данных не пуст, что-то появится. Также вам не нужно использовать defaultView, в качестве источника данных подойдет только dset.Tables(0). Как только вы сможете просмотреть gridview, обратите внимание на все имена заголовков столбцов, которые можно связать с помощью Eval, как в моем примере ранее.

person MindLoggedOut    schedule 21.11.2011