我想在我的程序中创建一个功能,当我加载一个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新手在此先感谢: - )
答案 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控件。