ListBox左右搬移放入使用者控制項

摘要:ListBox左右搬移放入使用者控制項

最近有一個功能需要多頁面使用,但是煩惱著如何一個程式碼給各個頁面使用,感謝MSDN論壇的各位高手,指導用WebUserControl,讓我解決這個問題。
我相信一下程式碼一定有更多地方要做修改。希望大家能夠給個意見。
步驟一、當然是新增一個web使用者控制項

步驟2.接下來妳要把所需要的控制項放入到web使用者控制項內。

接下來看到這麼多的控制項我想說一個按鈕一個程式碼似乎感覺不是很舒服,所以把她改成到Button_Command事件內按照這個圖片把每個按鈕寫你要的英文字在用switch抓取。以下展示程式碼。

public partial class WebUserControl : System.Web.UI.UserControl
{

        private string name;
        /// 
        /// 給予listbox_name
        /// 
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        /// 
        /// 給予資料庫字串
        /// 
        private string SQL;
        public string strSql
        {
            get { return SQL; }
            set { SQL = value; }
        }
        private string values;
        /// 
        /// 給予listbox_values值
        /// 
        public string Values
        {
            get { return values; }
            set { values = value; }
        }
    
        List SqlParamter = new List();
 
        DBConnction Conn = new DBConnction();
         /*抓取控制項到妳要的頁面去執行*/
       public ListBox final_box
        {
            get { return lst_Left; }
        }
/// 
/// 將資料放入左邊ListBox
/// 

        /*放入SQL 指令 ListBox 繫結*/
        public void bindList() {
          string   StrSql = strSql;
            SqlParamter = new List();
            lst_Right.DataSource = Conn.SQLSelect(StrSql, SqlParamter);
            lst_Right.DataTextField = Name;
            lst_Right.DataValueField = Values;
            lst_Right.DataBind();
        
        }
        
        
        /*接下來這個是把所有的按鈕事件放入到CommandName*/
        protected void Move_Command(object sender, CommandEventArgs e)
        {
            switch (e.CommandName)
            {
                case "RightAll":

                    for (int i = 0; i < lst_Right.Items.Count; i++)
                    {
                        lst_Left.Items.Add(new ListItem(lst_Right.Items[i].Text, lst_Right.Items[i].Value));

                    }
                    lst_Right.Items.Clear();

                    break;
                case "Right":
                    List myList = new List();
                    for (int i = 0; i < lst_Right.Items.Count; i++)
                    {
                        if (lst_Right.Items[i].Selected)
                        {
                            lst_Left.Items.Add(new ListItem(lst_Right.Items[i].Text, lst_Right.Items[i].Value));
                            myList.Add(new ListItem(lst_Right.Items[i].Text, lst_Right.Items[i].Value));
                
                        }
                    }
                    for (int i = 0; i < myList.Count; i++)
                    {

                        lst_Right.Items.Remove(myList[i]);
                    }
                    break;
                case "Left":
                  myList = new List();
                    for (int i = 0; i < lst_Left.Items.Count; i++)
                    {
                        if (lst_Left.Items[i].Selected)
                        {
                            lst_Right.Items.Add(new ListItem(lst_Left.Items[i].Text, lst_Left.Items[i].Value));
                            myList.Add(new ListItem(lst_Right.Items[i].Text, lst_Right.Items[i].Value));
                        }
                    }
                  for (int i = 0; i < myList.Count; i++)
                    {

                        lst_Right.Items.Remove(myList[i]);
                    }
                  break;
                case "LeftAll":
                    for (int i = 0; i < lst_Left.Items.Count; i++)
                    {
                        lst_Right.Items.Add(new ListItem(lst_Left.Items[i].Text, lst_Left.Items[i].Value));

                    }
                    lst_Left.Items.Clear();
                    break;
                case "top":
                    for (int i = 0; i < lst_Left.Items.Count; i++)
                    {
                        if (lst_Left.Items[i].Selected)
                        {
                            string TempValue = lst_Left.Items[i - 1].Value;
                            string TempString = lst_Left.Items[i - 1].Text;
                            lst_Left.Items[i - 1].Text = lst_Left.Items[i].Text;
                            lst_Left.Items[i - 1].Value = lst_Left.Items[i].Value;
                            lst_Left.Items[i].Value = TempValue;
                            lst_Left.Items[i].Text = TempString;
                            lst_Left.Items[i - 1].Selected = true;
                            lst_Left.Items[i].Selected = false;
                            lst_Left.Focus();

                        }
                    }
                    break;

                case "Down":
                    for (int i = lst_Left.Items.Count - 1; i >= 0; i--)
                    {
                        if (lst_Left.Items[i].Selected && !i.Equals(lst_Left.Items.Count - 1))
                        {
                            string TempValue = lst_Left.Items[i + 1].Value;
                            string TempString = lst_Left.Items[i + 1].Text;
                            lst_Left.Items[i + 1].Text = lst_Left.Items[i].Text;
                            lst_Left.Items[i + 1].Value = lst_Left.Items[i].Value;
                            lst_Left.Items[i].Value = TempValue;
                            lst_Left.Items[i].Text = TempString;
                            lst_Left.Items[i + 1].Selected = true;
                            lst_Left.Items[i].Selected = false;

                        }
                    }
                    break;

            }
        }

    }

 

接下來是把做好的listbox頁面放入妳想要的網頁上面去執行。

在把你所需要的程式碼撰寫進去確定按鈕的事件
 

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Collections.Generic;
public partial class About : System.Web.UI.Page
{
    DBConnction Conn = new DBConnction();
    List SqlParamter = new List();
 
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            /*寫入Sql語法到webuser控制項內 在把你要的顯示的值一起填入進去*/
          
            WebUserControl1.strSql = "select orderby,sort01Name from SITESORT01 order by orderby";
            WebUserControl1.Values = "orderby";
            WebUserControl1.Name = "Sort01Name";

            WebUserControl1.bindList();

        }
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        /*這個就是把左邊移到右邊寫入資料庫的程式碼*/
        int J=1;
        string strSql = "update SITESORT01 set orderby=@orderby where sort01name=@sort01name";
        for (int i = 0; i < WebUserControl1.final_box.Items.Count; i++)
        {
            SqlParamter.Add(new SqlParameter("orderby", J));
            SqlParamter.Add(new SqlParameter("sort01name", WebUserControl1.final_box.Items[i].Text  ));
            Conn.SQLExecute(strSql, SqlParamter);
            SqlParamter.Clear();

       
            J++;
        }

    }
}


接下來看一下執行的畫面

1.資料庫的排序目前是這樣

2.接下來看畫面~目前的樣子也是跟資料庫顯示的一樣


 

3.我亂排的方式移動

4.完成後看一下資料庫的排序

以上是我用最笨的方式呈現,我相信一定有更好的方法能去執行,也希望大家能夠給我多一點指點,謝謝各位