создание выпадающего списка в заголовке таблицы сетки при заполнении его данных столбца из таблицы Excel - PullRequest
0 голосов
/ 21 ноября 2011

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

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

Я импортировал данные в 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>

Ответы [ 2 ]

0 голосов
/ 21 ноября 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, как в моем примере ранее.

0 голосов
/ 21 ноября 2011

Убедитесь, что ваш набор данных или набор данных не пуст.Если строк нет, ничего не появится.Вот небольшой тест, который я сделал, и в шапке появился 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
...