0

グリッドビューを作成する必要があります

  1. その列に Excel シートのデータを入力し、
  2. gridview の各列のヘッダーには、ユーザーが選択して特定の列のヘッダーとして設定する電話、名前、価格などのリスト項目を含むドロップダウン リストが含まれている必要があります。

グリッドビューにデータをインポートしましたが、グリッドビューでドロップダウン リストを作成できません。デザイナーページでドロップダウンリストを作成しようとすると、グリッドビューヘッダーにドロップダウンリストを作成するだけで、データは入力されません.Excelシートから列データを入力しながら、グリッドビューのヘッダーにドロップダウンリストを作成するにはどうすればよいですか. 助けてください。

データをグリッドビューに入力するために使用したコードは

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

2 に答える 2

0

いくつかのこと。1. Gridview で AutoGenerateColumns が「True」に設定されていることを確認します。2. コードで、「Dim dtable As DataTable = ds.Tables(0)」を「Dim dtable As DataTable = dset.Tables(0)」に変更する必要があります。これは、入力するデータセットです。

また、AutoGenerateColumns が True に設定されている場合、Gridview はすべての列を自動的に表示するため、データセットが空でない場合は何かが表示されます。また、defaultView を使用する必要はありません。dset.Tables(0) だけがデータソースとして機能します。グリッドビューを表示できたら、前の例のように Eval を使用してバインドできるすべての列ヘッダー名に注意してください。

于 2011-11-21T19:58:54.873 に答える
0

データセットまたはデータテーブルが空でないことを確認してください。行がない場合は、何も表示されません。これは私が行った小さなテストで、ヘッダーに 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
于 2011-11-21T15:56:33.477 に答える