首页 > 代码库 > 实战: asp.net dropdownlist 和 listbox 一起使用

实战: asp.net dropdownlist 和 listbox 一起使用

2014-71 应用某门网应用排序管理

 

1: 接收参数, 初始化

 

int totalRows = 7;

int type = 0;

 

protected void Page_Load(object sender, EventArgs e)
  {
            try
            {
                type = Convert.ToInt32(Request.QueryString["f_ID"] == null ? "0" : Request.QueryString["f_ID"]);
                totalRows = Convert.ToInt32((Request.QueryString["columns"] == null ? "7" : Request.QueryString["columns"]));
            }
            catch (Exception)
            {
            }
            finally
            {
                if (!Page.IsPostBack)
                {
                    BindType(type.ToString());
                    BindApp(type.ToString());
                }
            }

  }

 

2: 绑定数据源 (dropdownlist 和 listbox)

 

private void BindType(string type)
  {
            string sqltype = "select id as TypeId , Name as TypeName from  VIEW_DT_WKCommon_LevelDicView where parentid= 4 order by RealOrederNum";

      DataSet typeds = SqlHelper.ExecuteDataset(conn, CommandType.Text, sqltype);

   if (typeds != null && typeds.Tables[0].Rows.Count > 0)
   {
   

    // 数据源绑定方式

    //DataRow r = typeds.Tables[0].NewRow();
    //r["TypeId"] = "0";
    //r["TypeName"] = "默认";

    //typeds.Tables[0].Rows.InsertAt(r, 0);

    //DropDownList1.DataSource = typeds.Tables[0];
    //DropDownList1.DataValueField = "TypeId";
    //DropDownList1.DataTextField = "TypeName";
    //DropDownList1.DataBind();

 

  // 选项添加方式
    DropDownList1.Items.Clear();

    DropDownList1.Items.Add(new ListItem("默认","0"));

    for (int i = 0; i < typeds.Tables[0].Rows.Count; i++)
    {
     ListItem item = new ListItem(typeds.Tables[0].Rows[i]["TypeName"].ToString(), typeds.Tables[0].Rows[i]["TypeId"].ToString());
     DropDownList1.Items.Add(item);
    }

    ListItem it = DropDownList1.Items.FindByValue(type);

    if (it != null)
    {
     DropDownList1.Items.FindByValue(type).Selected = true;
    }
    else
    {
     DropDownList1.SelectedIndex = 0;
    }
    
   }
   else
   {
    ListItem item = new ListItem("无任何分类", "0");
    ListBox1.Items.Add(item);
   }

  }
        
  // 绑定App
  private void BindApp(string type)
  {
   string condition = type == "0" ? string.Format("s.IsDefault=1") : string.Format("a.type={0}", type);

   string sqlapp = string.Format("select s.Id, a.Name, a.Type, s.sort from DT_work_NH_SelfSettings as s, DT_work_NH_SelfDefApps as a where s.appid = a.id and s.CreaterID = {0} and {1} order by sort",UserId, condition);

   DataSet appds = SqlHelper.ExecuteDataset(conn, CommandType.Text, sqlapp);

   if (appds != null && appds.Tables[0].Rows.Count > 0)
   {
    ListBox1.Items.Clear();

    for (int i = 0; i < appds.Tables[0].Rows.Count; i++)
    {
     ListItem item = new ListItem(appds.Tables[0].Rows[i]["Name"].ToString(), appds.Tables[0].Rows[i]["Id"].ToString());
     ListBox1.Items.Add(item);
    }

    InsertLine();
    ListBox1.SelectedIndex = 0;
    lbmsg.Text = string.Format("该分类共有{0}个应用", appds.Tables[0].Rows.Count);
                lbStep.Text = "";
    IsDisenableBtn(false);
   }
   else
   {
    ListBox1.Items.Clear();
    ListBox1.Items.Add("无相关数据项!");
    lbmsg.Text = "提示:该应用分类暂无包含任何应用!";
    lbStep.Text = "";
    IsDisenableBtn(true);
   }
  }

 

3: dropdownlist 数据联动

  // 重新绑定分类信息
  protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
  {
    BindApp(DropDownList1.SelectedValue);
  }

 

说明:

listbox 有时需要添加额外的选项来区分分组, 比如每4个选项划分为一组,组与组之间添加分隔线

如: ---------------第({0})排---------------

 

  static string line = "---------------第({0})排---------------";

  // 移除每排分隔线
  private void RemoveLine()
  {
   int rows = ListBox1.Items.Count / totalRows;
   int others = ListBox1.Items.Count % totalRows;

   for (int m = 1; m <= rows; m++)
   {
    ListBox1.Items.Remove(new ListItem(string.Format(line, m), "-1"));
   }

   if (others > 0)
   {
    ListBox1.Items.Remove(new ListItem(string.Format(line, rows + 1), "-1"));
   }
  }

 

  // 添加每排分隔线
  private void InsertLine()
  {
   int rows = ListBox1.Items.Count / totalRows;
   int others = ListBox1.Items.Count % totalRows;

   for (int m = 1, n = 0; m <= rows; m++, n++)
   {
    int index = m * Convert.ToInt32(totalRows) + n;
    ListBox1.Items.Insert(index, new ListItem(string.Format(line, m), "-1"));
   }

   if (others > 0)
   {
    ListBox1.Items.Insert(ListBox1.Items.Count, new ListItem(string.Format(line, rows + 1), "-1"));
   }
  }

 

效果如下: