2014-09-08 3 views
4

У меня есть два раскрывающихся списка, в которых есть «Состояние», а другое - «Кластер». Оба этих раскрывающегося списка являются реляционными. Например, если я выбираю Kerala в State, Cluster будет заполнять важные города и dist. как Pathnamthitta, calicut, palakad и т. д.«Выбрать все» для двух или более выпадающего списка

Итак, я хочу, я хочу дать опцию «Выбрать все» в State и Cluster ddl.

Я прошел через:

How to select all records in a DropDownList

http://www.w3schools.com/aspnet/control_dropdownlist.asp

http://forums.asp.net/t/1221977.aspx?Adding+a+Select+all+option+to+a+drop+down+list

Но ни один из них не работает для меня. Я могу иметь возможность выбрать все в состоянии, но не получать значения кластеров, заполненные на другом ddl.

Это мой код для "государственного" DDL:

protected void Page_Load(object sender, EventArgs e) 
{ 
if (!IsPostBack) 
{ 
DataSet3TableAdapters.tbl_energy_reportTableAdapter state; 
state = new DataSet3TableAdapters.tbl_energy_reportTableAdapter(); 
DataTable dt = new DataTable(); 
dt = state.GetDataByStateInnerJoin(); 
DropDownList1.DataSource = dt; 
DropDownList1.DataTextField = "state1"; 
DropDownList1.DataValueField = "state1"; 
DropDownList1.DataBind();     
DropDownList1.Items.Insert(0, new System.Web.UI.WebControls.ListItem("--Select State--", "0")); 
DropDownList2.Items.Insert(0, new System.Web.UI.WebControls.ListItem("--Select Cluster--", "0")); 
} 
} 

И этот код для "Кластер"

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 

DataSet3TableAdapters.tbl_energy_reportTableAdapter state; 
state = new DataSet3TableAdapters.tbl_energy_reportTableAdapter(); 
DataTable dt = new DataTable(); 
dt = state.GetDataByClusterInnerJoin(DropDownList1.SelectedValue); 
DropDownList2.DataSource = dt; 
DropDownList2.DataTextField = "cluster"; 
DropDownList2.DataValueField = "cluster"; 
DropDownList2.DataBind(); 

} 

Это запрос для государственного DDL:

SELECT DISTINCT tbl_site_details.state1 
FROM   tbl_site_details INNER JOIN 
         tbl_energy_report ON tbl_energy_report.Site_ID = tbl_site_details.site_id 

И этот запрос для кластера ddl:

SELECT  tbl_site_details.cluster 
FROM   tbl_site_details INNER JOIN 
         tbl_energy_report ON tbl_energy_report.Site_ID = tbl_site_details.site_id 
WHERE  (tbl_site_details.state1 = @state1) 
+0

Не уверен, что такое класс DataSet3TableAdapters, но вы запрашиваете, чтобы Cluster должен ожидать несколько значений состояния, а не один (т. Е. В разделе и не равно). – danish

+0

«DataSet3TableAdapter» - это набор данных, который держит таблицу «tbl_energy_report». – 2014-09-08 06:51:22

ответ

0

Это связано с тем, что переустановите ddl2 с помощью dt на ddl1_selectedindexchanged.

Закомментируйте 'DropDownList2.Items.Insert' на вашем Page_Load

protected void Page_Load(object sender, EventArgs e) 
{ 
if (!IsPostBack) 
{ 
DataSet3TableAdapters.tbl_energy_reportTableAdapter state; 
state = new DataSet3TableAdapters.tbl_energy_reportTableAdapter(); 
DataTable dt = new DataTable(); 
dt = state.GetDataByStateInnerJoin(); 
DropDownList1.DataSource = dt; 
DropDownList1.DataTextField = "state1"; 
DropDownList1.DataValueField = "state1"; 
DropDownList1.DataBind();     
DropDownList1.Items.Insert(0, new System.Web.UI.WebControls.ListItem("--Select State--", "0")); 
//COMMENT THIS LINE 
//DropDownList2.Items.Insert(0, new System.Web.UI.WebControls.ListItem("--Select Cluster--", "0")); 
} 
} 

и переместить его в dropdownlist1_selectedindexchanged случае.

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 

DataSet3TableAdapters.tbl_energy_reportTableAdapter state; 
state = new DataSet3TableAdapters.tbl_energy_reportTableAdapter(); 
DataTable dt = new DataTable(); 
dt = state.GetDataByClusterInnerJoin(DropDownList1.SelectedValue); 
DropDownList2.DataSource = dt; 
DropDownList2.DataTextField = "cluster"; 
DropDownList2.DataValueField = "cluster"; 
DropDownList2.DataBind(); 

//put it here 
DropDownList2.Items.Insert(0, new System.Web.UI.WebControls.ListItem("--Select Cluster--", "0")); 
} 
0

Его Лучше использовать призывы Ajax для заполнения второго выпадающего списка. Отправьте запрос на сервер со строкой поиска, содержащей выбранные идентификаторы, и заполните второй выпадающий результат. возвращает результат как объекты json.