private string _classcode;
public ArrayList array = new ArrayList();
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
ViewState["droplistcount"] = 0;
Session["createcontrol"] = 0;
}
while (Panel1.Controls.Count > 0)
{
Panel1.Controls.RemoveAt(0);
}
if (Convert.ToInt32(ViewState["droplistcount"]) == 0)
{
DropDownList list = new DropDownList();
list.ID = "list0";
list.AutoPostBack = true;
list.SelectedIndexChanged += new EventHandler(list_SelectedIndexChanged);
TMO.BLL.T_PdClass T_PdClass = new TMO.BLL.T_PdClass();
DataTable dt = T_PdClass.GetList("classlevel=0").Tables[0];
list.DataSource = dt;
list.DataTextField = "ClassName";
list.DataValueField = "ClassCode";
list.DataBind();
ListItem item = new ListItem();
item.Value = "0";
item.Text = "--全部";
list.Items.Insert(0, item);
Panel1.Controls.Add(list);
array.Add(list);
ViewState["droplistcount"] = 1;
Session["createcontrol"] = array;
}
else
{
ArrayList controllist = new ArrayList();
controllist = (ArrayList)Session["createcontrol"];
//避免控件重复加载
for (int i = 0; i < controllist.Count; i++)
{
DropDownList downlist = (DropDownList)controllist[i];
Panel1.Controls.Add(downlist);
DropDownList list = (DropDownList)Panel1.Controls[i];
list.SelectedIndexChanged += new EventHandler(list_SelectedIndexChanged);
}
}
}
void list_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList list1 = (DropDownList)sender;
ArrayList controllist = new ArrayList();
int index = Panel1.Controls.IndexOf(list1);
if (list1.SelectedValue == "0")
{
while (Panel1.Controls.Count > index + 1)
{
Panel1.Controls.RemoveAt(index + 1);
controllist = (ArrayList)Session["createcontrol"];
controllist.RemoveAt(index + 1);
Session["createcontrol"] = controllist;
}
return;
}
else
{
while (Panel1.Controls.Count > index + 2)
{
Panel1.Controls.RemoveAt(index + 2);
controllist = (ArrayList)Session["createcontrol"];
controllist.RemoveAt(index + 2);
Session["createcontrol"] = controllist;
}
}
controllist = (ArrayList)Session["createcontrol"];
ViewState["droplistcount"] = controllist.Count;
string Key = list1.SelectedValue;
TMO.BLL.T_PdClass T_PdClass = new TMO.BLL.T_PdClass();
DataTable dt = T_PdClass.GetList("parentcode='" + Key + "'").Tables[0];
if (dt.Rows.Count > 0)
{
//若该级已存在只需更新不用删除后添加,否则运行不正常
if (Panel1.Controls.IndexOf(list1) == Panel1.Controls.Count - 1)
{
DropDownList list = new DropDownList();
list.AutoPostBack = true;
list.DataSource = dt;
list.DataTextField = "ClassName";
list.DataValueField = "classcode";
list.DataBind();
ListItem item = new ListItem();
item.Value = "0";
item.Text = "--全部";
list.Items.Insert(0, item);
list.SelectedIndexChanged += new EventHandler(list_SelectedIndexChanged);
controllist = (ArrayList)Session["createcontrol"];
controllist.Add(list);
Session["createcontrol"] = controllist;
ViewState["droplistcount"] = controllist.Count;
Panel1.Controls.Add(list);
}
else
{
DropDownList list = (DropDownList)Panel1.Controls[Panel1.Controls.Count - 1];
list.AutoPostBack = true;
list.DataSource = dt;
list.DataTextField = "ClassName";
list.DataValueField = "classcode";
list.DataBind();
ListItem item = new ListItem();
item.Value = "0";
item.Text = "--全部";
list.Items.Insert(0, item);
list.SelectedIndexChanged += new EventHandler(list_SelectedIndexChanged);
}
}
else
{
if (Panel1.Controls.IndexOf(list1) != Panel1.Controls.Count - 1)
{
Panel1.Controls.RemoveAt(index + 1);
controllist = (ArrayList)Session["createcontrol"];
controllist.RemoveAt(index + 1);
Session["createcontrol"] = controllist;
}
}
}
public string classcode
{
get
{
int controlcount = Panel1.Controls.Count;
if (controlcount == 1)
{
DropDownList list = (DropDownList)Panel1.Controls[controlcount - 1];
_classcode = list.SelectedValue;
}
else
{
DropDownList list = (DropDownList)Panel1.Controls[Panel1.Controls.Count - 1];
if (list.SelectedValue == "0")
{
DropDownList list1 = (DropDownList)Panel1.Controls[Panel1.Controls.Count - 2];
_classcode = list1.SelectedValue;
}
else
{
_classcode = list.SelectedValue;
}
}
return _classcode;
}
}