<asp:UpdatePanel runat="server" ID="ddl_list">
<ContentTemplate>
<asp:DropDownList ID="ddl_root" runat="server" OnSelectedIndexChanged="showChildList" AutoPostBack="true">
</asp:DropDownList>
</ContentTemplate>
</asp:UpdatePanel>我在aspx文件中添加如上代码,showChildList函数如下:
protected void showChildList(object sender, EventArgs e)
{
DropDownList ddl_now = (DropDownList)sender;
string sql = "select part_id,part_name from tb_Parts where root_id='" + ddl_now.SelectedValue.ToString() + "'";
SqlDataReader DR = means.getcom(sql);
if (DR.HasRows)
{
DropDownList ddl_new = new DropDownList();
ddl_new.SelectedIndexChanged += new System.EventHandler(this.ChildList);
ddl_new.AutoPostBack = true;
ListItem li = new ListItem();
li.Value = "-1";
li.Text = "请选择栏目...";
li.Selected = true;
ddl_new.Items.Add(li);
while (DR.Read())
{
ListItem li2 = new ListItem();
li2.Value = DR["part_id"].ToString();
li2.Text = DR["part_name"].ToString();
ddl_new.Items.Add(li2);
}
ddl_now.Parent.Controls.Add(ddl_new);
}
}
我要实现的功能是当下拉框中的选择项改变时,到数据库中查找所选项目是否有子菜单,如果有则添加一个下拉框,在其中添加所有子菜单,如此循环。但是运行之后,我选择第一个下拉框的相应项目之后,局部刷新,添加了下拉框,在第二个下拉框中选择后就直刷新页面了,第二个下拉框也没有了。不知是哪里出了问题。还有请问 “ddl_now.Parent.Controls.Add(ddl_new);” 是实现了将新的DropDownList控件加入到<ContentTemplate>标签里吗?
<ContentTemplate>
<asp:DropDownList ID="ddl_root" runat="server" OnSelectedIndexChanged="showChildList" AutoPostBack="true">
</asp:DropDownList>
</ContentTemplate>
</asp:UpdatePanel>我在aspx文件中添加如上代码,showChildList函数如下:
protected void showChildList(object sender, EventArgs e)
{
DropDownList ddl_now = (DropDownList)sender;
string sql = "select part_id,part_name from tb_Parts where root_id='" + ddl_now.SelectedValue.ToString() + "'";
SqlDataReader DR = means.getcom(sql);
if (DR.HasRows)
{
DropDownList ddl_new = new DropDownList();
ddl_new.SelectedIndexChanged += new System.EventHandler(this.ChildList);
ddl_new.AutoPostBack = true;
ListItem li = new ListItem();
li.Value = "-1";
li.Text = "请选择栏目...";
li.Selected = true;
ddl_new.Items.Add(li);
while (DR.Read())
{
ListItem li2 = new ListItem();
li2.Value = DR["part_id"].ToString();
li2.Text = DR["part_name"].ToString();
ddl_new.Items.Add(li2);
}
ddl_now.Parent.Controls.Add(ddl_new);
}
}
我要实现的功能是当下拉框中的选择项改变时,到数据库中查找所选项目是否有子菜单,如果有则添加一个下拉框,在其中添加所有子菜单,如此循环。但是运行之后,我选择第一个下拉框的相应项目之后,局部刷新,添加了下拉框,在第二个下拉框中选择后就直刷新页面了,第二个下拉框也没有了。不知是哪里出了问题。还有请问 “ddl_now.Parent.Controls.Add(ddl_new);” 是实现了将新的DropDownList控件加入到<ContentTemplate>标签里吗?
解决方案 »
- 求一既能输入又能选择的控件
- ASP.NET的WEB应用程序能不能这样架构
- 关于动态添加控件
- 绑定gridview里面的Dropdownlist控件是不是一定要用GridView1_RowDataBound这个事件啊
- 帮忙解释一下这个错误的如何解决?
- asp.net2005中控件怎么移动不了
- [群12634167]开发人员关于C#、VB和VBScrip的技术群(群内气氛较为活跃,喜静者勿加)
- 关于.NET SQLCE数据库同步问题
- 我是个初学者,想问个问题?有关工资~
- 工作线程不见了???
- (代理问题)为什么在调用web service 时 远程主机强迫关闭了一个现有的连接。
- flexigrid 有没有祥细的例子啊 asp.net的。
那我第二个DropDownList在事件中添加的,也要加UpadatePanel吗?不是直接添加在原有的UpadatePanel里吗?
没把这个DropDownList 放到updatePanel中去,建议在页面上先放好DropDownList并隐藏掉,选择的时候显示它要好点哦
但是第二个下拉框就已经不是局部刷新了,似乎不执行showChildList()函数
<ContentTemplate>
<div>
<asp:DropDownList ID="ddl_root" runat="server" OnSelectedIndexChanged="showChildList" AutoPostBack="true">
</asp:DropDownList>
</div>
</ContentTemplate>
</asp:UpdatePanel>
莫非要这样?
用js写ajax吧,干脆别用服务端控件了