【问题标题】:How to create SelectIndexChanged event for multiple selection in asp.net如何在 asp.net 中为多选创建 SelectedIndexChanged 事件
【发布时间】:2020-08-23 06:39:56
【问题描述】:

我想从复选框列表中选择多个项目,然后在第一个复选框列表的选择索引更改事件上填充另一个复选框列表,但是在一次选择后,由于"Auto Post Back = true",它不适用于另一个选定的项目,而调试时我可以看到指针从页面加载事件开始。我希望在选择所有项目后应该触发 "ddlregion_SelectedIndexChanged" 以便我可以在另一个复选框列表中看到所有选定的项目相关值。

protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                BindRegion();
            }
        }

因此它没有为其他选定的项目获取数据如何解决这个问题请帮助我。

ddlRegion 代码绑定:

public void BindRegion()
        {
            OracleCommand Cmd = new OracleCommand("select * from regions", con);
            Cmd.CommandType = CommandType.Text;
            OracleDataAdapter da = new OracleDataAdapter();
            DataSet ds = new DataSet();
            da.SelectCommand = Cmd;
            da.Fill(ds);
            ddlregion.DataSource = ds;
            ddlregion.DataTextField = "REGION_DESC";
            ddlregion.DataValueField = "REGION_CODE";
            ddlregion.DataBind();

        }

选择索引更改事件

 protected void ddlregion_SelectedIndexChanged(object sender, EventArgs e)
 {
  ddlDepot.Items.Clear();
  ddlDepot.Items.Add(new ListItem("--Select Depot--", ""));
  foreach (ListItem item in ddlregion.Items)
   {

   if (item.Selected == true)
   {
string str = "select d.depot_code, d.depot_description from regions r, sub_regions sr, depots d where r.region_code = sr.region_code and sr.sub_region_code = d.sub_region_code and active = 'Y' and r.region_code in " + ddlregion.SelectedValue + "";
                    OracleCommand Cmd = new OracleCommand(str, con);
                    Cmd.CommandType = CommandType.Text;
                    OracleDataAdapter da = new OracleDataAdapter();
                    DataSet ds = new DataSet();
                    da.SelectCommand = Cmd;
                    da.Fill(ds);
                    ddlDepot.DataSource = ds;
                    ddlDepot.DataTextField = "DEPOT_DESCRIPTION";
                    ddlDepot.DataValueField = "DEPOT_CODE";
                    ddlDepot.DataBind();
                }
            }
        }

【问题讨论】:

    标签: asp.net checkboxlist cascading


    【解决方案1】:

    您需要为 SQL 构建您的区域列表,然后在完成后调用您的 SQL 并绑定。

     string regions = "";
     bool regionSelected = false;
      foreach (ListItem item in ddlregion.Items)
      {  
       if (item.Selected == true)
        {
            regions += item.SelectedValue + ",";
            regionSelected = true;
        }
     
      } 
         // looping done so clean up string for SQL
         regions = "(" + regions.TrimEnd(',') + " )";
    
     //only run if a region is selected
     if(regionSelected)
     {
     string str = "select d.depot_code, d.depot_description from regions r, sub_regions sr, 
     depots d where r.region_code = sr.region_code and      
     sr.sub_region_code = d.sub_region_code and active = 'Y' and  r.region_code    
     in " + regions;
                    OracleCommand Cmd = new OracleCommand(str, con);
                    Cmd.CommandType = CommandType.Text;
                    OracleDataAdapter da = new OracleDataAdapter();
                    DataSet ds = new DataSet();
                    da.SelectCommand = Cmd;
                    da.Fill(ds);
                    ddlDepot.DataSource = ds;
                    ddlDepot.DataTextField = "DEPOT_DESCRIPTION";
                    ddlDepot.DataValueField = "DEPOT_CODE";
                    ddlDepot.DataBind();
     }
         
    

    【讨论】:

    • 对于另一个选定的项目 ID 未更改
    • 如果 sql 语句出现问题,您可能必须在值周围添加单引号。我只是徒手写这个,所以测试一下。区域 += "'" + item.SelectedValue + "'" + ",";
    • 它在“item.SelectedValue”上出现错误,因为该项目在外面是不可访问的
    • 请确认您的 SQL 正在使用我声明的字符串区域。 string str = "select d.depot_code, d.depot_description from region r, sub_regions sr, depots d where r.region_code = sr.region_code and sr.sub_region_code = d.sub_region_code and active = 'Y' and r.region_code in " +地区;
    • 它的工作时间
    猜你喜欢
    • 2018-09-15
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多