使用SQL Server中的值动态创建下拉列表

时间:2015-04-20 10:13:32

标签: sql-server vb.net excel dynamically-generated

我想在我的程序中创建一个功能,当我加载一个excel文件时,它会计算电子表格中的列数,并为每一列动态创建一个下拉列表,选择它应该是什么标题,然后绑定它来自SQL Server的GridView .Data将填充下拉列表。我遇到的一些问题是,我如何有一个按钮,它要求文件位置?我试过这种方式加载硬编码的位置,但它不起作用。

Sub SubmitBtn_Excel(Sender As Object, E As EventArgs)
        Try
            Dim MyConnection As System.Data.OleDb.OleDbConnection
            Dim dataSet As System.Data.DataSet
            Dim MyCommand As System.Data.OleDb.OleDbDataAdapter
            Dim path As String = "C:\\spreadsheet.xlsx"

            MyConnection = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;")
            MyCommand = New System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", MyConnection)

            dataSet = New System.Data.DataSet
            MyCommand.Fill(dataSet)
            GridView1.DataSource = dataSet.Tables(0)

            MyConnection.Close()
        Catch ex As Exception

        End Try

    End Sub

我还有一个方法用我创建的表来调用数据库来填充数据,如果我把这个方法全部放在excel调用的一个方法中?考虑到下拉动态ID是动态创建的,它不知道如何找到它,因为它不是HTML中的id

Protected Sub Page_Load(sender As Object, e As EventArgs)
        If Not Page.IsPostBack Then
            FillDeptDropdownList()
        End If
    End Sub
    Protected Sub FillDeptDropdownList()
        Dim con As New SqlConnection(ConfigurationManager.ConnectionStrings("MyDbCon").ConnectionString)

        Dim cmd As New SqlCommand("Select * from demofeepay.dbo.catagories", con)
        Dim adp As New SqlDataAdapter(cmd)
        Dim dt As New DataTable()
        adp.Fill(dt)
        ddlDynamic.DataSource = dt
        ddlDynamic.DataTextField = "catagory"
        ddlDynamic.DataValueField = "ID"
        ddlDynamic.DataBind()
        ddlDynamic.Items.Insert(0, "Select Catagory")

    End Sub

这是我创建下拉列表的方法

Sub SubmitBtn_Excel(Sender As Object, E As EventArgs)
        Try
            Dim MyConnection As System.Data.OleDb.OleDbConnection
            Dim dataSet As System.Data.DataSet
            Dim MyCommand As System.Data.OleDb.OleDbDataAdapter
            Dim path As String = "C:\\Users\\John\\Documents\\John\\EPP\\WorldNet_Notes\\CHRISTIAN_BROTHERS_HIGH_SCHOOL.xlsx"

            MyConnection = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;")
            MyCommand = New System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", MyConnection)

            dataSet = New System.Data.DataSet
            MyCommand.Fill(dataSet)
            GridView1.DataSource = dataSet.Tables(0)

            MyConnection.Close()
        Catch ex As Exception

        End Try

    End Sub

这是HTML

<form id="form1" runat="server" style="overflow-x:hidden; width:100%">
<div>
    <asp:button id="butOK" text="Add Dropdowns" onclick="SubmitBtn_Click" runat="server"/>
    <asp:button id="BtnAddExcel" text="Add Spreadsheet" OnClick="SubmitBtn_Excel" runat="server"/>
</div>
<div id ="ddlDynamic">
<!-- Dynamic Dropdowns -->

    <asp:GridView ID="GridView1" runat="server"></asp:GridView>
</div>
</form>

我知道这到处都是,因为你可以看到我有点迷失。我真的不想让任何人用勺子喂我的答案,我只是不确定如何构建它,或者任何人都可以指出我正确的方向来了解更多。 vb新手在此先感谢: - )

1 个答案:

答案 0 :(得分:0)

首先,您需要将PlaceHolder控件添加到WebForm中。 您将以这种方式将DropDownLists添加到此PlaceHolder:

        foreach (var item in collection)
        {
            DropDownList ddl = new DropDownList();
            lb.Items.AddRange(item.values);
            ddl.ID = "ddl" + (PlaceHolder1.Controls.Count() + 1);
            PlaceHolder1.Controls.Add(ddl);
            PlaceHolder1.Controls.Add(new LiteralControl("<br />"));
        }

对于文件按钮,您可能希望使用FileUpload控件。