【问题标题】:Dynamically creating a dropdown, with values from SQL server使用来自 SQL 服务器的值动态创建下拉列表
【发布时间】:2015-04-20 10:13:32
【问题描述】:

我想在我的程序中创建一个功能,当我加载到一个 excel 文件中时,它会计算电子表格中有多少列,并为每一列动态创建一个下拉列表,以选择它应该是什么标题,并绑定它从 SQL 服务器到 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 新手。在此先感谢:-)

【问题讨论】:

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


    【解决方案1】:

    首先,您需要将 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 控件。

    【讨论】:

      猜你喜欢
      • 2020-06-04
      • 1970-01-01
      • 2013-11-07
      • 1970-01-01
      • 2021-05-18
      • 1970-01-01
      • 1970-01-01
      • 2013-02-26
      • 1970-01-01
      相关资源
      最近更新 更多