使用ASP.NET的结合(用C#)和jQuery,我尝试创建DropDownList
s的一个按钮。 这些DropDownList
旨意与SQL查询来填充。
我在遇到困难的部分是只用按一下按钮添加多个。
如果用户点击该按钮5次,5更DropDownList
应创建S和填充有相同的数据。 理想情况下,每一个DropDownList
被包含在一个表中的一个新行,或以类似的方式进行组织。
我不想做在JavaScript中的任何SQL连接。 与此有什么建议?
编辑:
我已经尝试使用一个<asp:PlaceHolder>
,和然后使用该添加DropDownList
。 我无法弄清楚如何使用此方法,并添加多个,虽然:
<asp:PlaceHolder ID="PlaceHolder1" runat="server"/>
protected void Add_Dropdownlist()
{
DropDownList DropDownList1 = new DropDownList();
PlaceHolder1.Controls.Add(DropDownList1);
}
我已经使用jQuery复制原始尝试DropDownList
。 我的问题是,是,我无法弄清楚如何让原来DropDownList
从jQuery的,如果它是一个<asp:DropDownList>
。 如果我把它改为<select>
相反,我无法弄清楚如何从ASP(服务器)端SQL数据填充它。
<select id="DropDownList1">
<option value="-1"></option>
</select>
<asp:DropDownList ID="DropDownList2" runat="server"></asp:DropDownList>
function copy_Dropdownlist()
{
newDropdownlist = jQuey.extend({}, DropDownList2);
}
总之,我已经走了下来几条路径,但我不认为任何人都正确。 我是新来ASP.NET(谷歌教育),我认为问题在于连接客户端jQuery和服务器端ASP.NET。 谢谢您的帮助。
(这是关于你<asp:PlaceHolder>
。做法实际上,我想使用<asp:Panel>
,因为它似乎更适合这里)
它看起来像你正在运行到问题是DropDownList
s的不是在回发持续。 所以,每次创建一个新的,并把它添加到你的时间PlaceHolder
,你仍然只是一个结束。
要解决这个问题,你需要跟踪你已经创建的那些的。 在你Page_Load
,您想为您的存储容器DropDownList
S(我用一个List<>
此),并将其保存在用户的“ Session
”。 请注意!Page.IsPostBack
; 您只需要一次创建这个(首次加载页面,你不回发每次):
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
List<DropDownList> DDLList = new List<DropDownList>();
Session["DDLs"] = DDLList;
}
}
现在,当你按一下按钮,就可以
- 获取现有
DropDownList
S(如果有的话)从您的Session
变量, - 添加新的一个此按钮点击该列表
- 您的所有添加
DropDownList
年代到Panel
, - 再换保存更新列表,您的
Session
变量。
像这样:
protected void Button1_Click(object sender, EventArgs e)
{
DropDownList newDropDown = new DropDownList();
List<DropDownList> existingDropDowns = (List<DropDownList>)Session["DDLs"];
existingDropDowns.Add(newDropDown);
foreach (DropDownList dropdown in existingDropDowns)
{
Panel1.Controls.Add(dropdown);
}
Session["DDLs"] = existingDropDowns;
}
我不知道你要完成什么,但是这会告诉你如何开始。
@ jadarnel27
非常感谢您的帮助,这让我的地方,我需要去。 我不得不做一点更多的工作来处理后回选择更改。 以下是我结束了。
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
List<DropDownList> DDLList = new List<DropDownList>();
Session["DDLs"] = DDLList;
}
else
{
List<DropDownList> existingDropDowns = (List<DropDownList>)Session["DDLs"];
//Add all existing DropDownLists to Panel
foreach (DropDownList dropdown in existingDropDowns)
{
Panel1.Controls.Add(dropdown);
dropdown.AutoPostBack=true;
Panel1.Controls.Add(new LiteralControl("<br/>"));
}
Session["DDLs"] = existingDropDowns;
}
}
protected void Button_Click(Object sender, EventArgs e)
{
List<DropDownList> existingDropDowns = (List<DropDownList>)Session["DDLs"];
DropDownList newDropDown = new DropDownList();
newDropDown.ID = "DDL" + existingDropDowns.Count.ToString();
//Bind DropDownList to SQL Table
Populate_List("mySQLTable", newDropDown, "");
existingDropDowns.Add(newDropDown);
//Add only new DropDownList to Panel
Panel1.Controls.Add(newDropDown);
newDropDown.AutoPostBack=true;
Panel1.Controls.Add(new LiteralControl("<br/>"));
Session["DDLs"] = existingDropDowns;
}
protected void clickSubmit(Object sender, EventArgs e)
{
List<DropDownList> existingDropDowns = (List<DropDownList>)Session["DDLs"];
foreach (DropDownList dropdown in existingDropDowns)
{
//Insert each DropDownList selected value into SQL Table
ETS.Core.Db.Database.ExecuteNoLog("INSERT INTO myNewTable (id,text) VALUES ('" + dropdown.SelectedValue + "', '" + dropdown.SelectedItem + "')");
}
}
再次感谢。