【问题标题】:"Select All" option for two or more dropdown list两个或多个下拉列表的“全选”选项
【发布时间】:2014-10-31 19:00:07
【问题描述】:

我有两个下拉列表,其中一个是“状态”,另一个是“集群”。这两个下拉列表都是相关的。例如,如果我在 State 中选择 Kerala,则 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();

}

这是对 State 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)

【问题讨论】:

  • 不确定 DataSet3TableAdapters 类是什么,但您查询以获取 Cluster 必须预期多个状态值,而不是单个值(即 in 子句而不是等于)。
  • “DataSet3TableAdapter”是一个数据集,其中包含“tbl_energy_report”表。

标签: c# drop-down-menu selectall


【解决方案1】:

那是因为在 ddl1_selectedindexchanged 方法上重新绑定了 ddl2 和 dt。

在您的 page_load 上评论“DropDownList2.Items.Insert”

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"));
}

【讨论】:

    【解决方案2】:

    最好使用 Ajax 调用来填充第二个下拉列表。使用包含选定 ID 的搜索字符串向服务器发送请求,并用结果填充第二个下拉列表。将结果作为 json 对象返回。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-21
      • 2018-05-19
      相关资源
      最近更新 更多