DavidJGu's Blog

       尼采说,宁可追求虚无也不能无所追求!  Keeping is harder than winning
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

ListBox间数据传递(2)

Posted on 2004-08-24 13:31  Let's DotNet  阅读(733)  评论(0编辑  收藏  举报

增加了CheckBoxList,CheckBoxList与ListBox之间的数据传递

using System;
using System.Web.UI.WebControls;


namespace PowerSelect
{
    
/// <summary>
    
/// PowerSelect 的摘要说明:用于两个控件间的数据选择传递;目前只做到ListBox,CheckBoxList;以后根据需要会扩展。
    
/// </summary>

    public class PowerSelect
    
{
        
//源控件
        object m_sourceObj;
        
//目标控件
        object m_desObj;
        
//选择模式:1,single-select ; 2, multi-select
        int m_selMode;
        
        
        
public PowerSelect(ListBox listBoxSource,ListBox listBoxDes)
        
{
            m_sourceObj 
= listBoxSource;
            m_desObj 
= listBoxDes;
            m_selMode 
= 1;
        }


        
public PowerSelect(ListBox listBoxSource,ListBox listBoxDes,int selMode)
        
{
            m_sourceObj 
= listBoxSource;
            m_desObj 
= listBoxDes;
            m_selMode 
= selMode;
        }

        
        
public PowerSelect(CheckBoxList listBoxSource,CheckBoxList listBoxDes)
        
{
            m_sourceObj 
= listBoxSource;
            m_desObj 
= listBoxDes;
            m_selMode 
= 1;
        }

        
        
public PowerSelect(CheckBoxList listBoxSource,CheckBoxList listBoxDes,int selMode)
        
{
            m_sourceObj 
= listBoxSource;
            m_desObj 
= listBoxDes;
            m_selMode 
= selMode;
        }


        
public PowerSelect(CheckBoxList listBoxSource,ListBox listBoxDes)
        
{
            m_sourceObj 
= listBoxSource;
            m_desObj 
= listBoxDes;
            m_selMode 
= 1;
        }

        
public PowerSelect(CheckBoxList listBoxSource,ListBox listBoxDes,int selMode)
        
{
            m_sourceObj 
= listBoxSource;
            m_desObj 
= listBoxDes;
            m_selMode 
= selMode;
        }


        
public PowerSelect(ListBox listBoxSource,CheckBoxList listBoxDes)
        
{
            m_sourceObj 
= listBoxSource;
            m_desObj 
= listBoxDes;
            m_selMode 
= 1;
        }

        
public PowerSelect(ListBox listBoxSource,CheckBoxList listBoxDes,int selMode)
        
{
            m_sourceObj 
= listBoxSource;
            m_desObj 
= listBoxDes;
            m_selMode 
= selMode;
        }


        
public PowerSelect(object objSource,object objDes,int selMode)
        
{
            m_sourceObj 
= objSource;
            m_desObj 
= objSource;
            m_selMode 
= selMode;
        }



        
public void Add()
        
{
            
if (this.m_sourceObj is ListBox && this.m_desObj is ListBox)
            
{
                
this.AddListItem((ListBox)m_sourceObj,(ListBox)m_desObj);
            }


            
if (this.m_sourceObj is CheckBoxList && this.m_desObj is CheckBoxList)
            
{
                
this.AddListItem((CheckBoxList)m_sourceObj,(CheckBoxList)m_desObj);
            }


            
if (this.m_sourceObj is CheckBoxList && this.m_desObj is ListBox)
            
{
                
this.AddListItem((CheckBoxList)m_sourceObj,(ListBox)m_desObj);
            }


            
if (this.m_sourceObj is ListBox && this.m_desObj is CheckBoxList)
            
{
                
this.AddListItem((ListBox)m_sourceObj,(CheckBoxList)m_desObj);
            }

            
        }


        
public void Remove()
        
{
            
if (this.m_desObj is ListBox)
            
{
                
this.RemoveListItem((ListBox) m_desObj);
            }

            
else if (this.m_desObj is CheckBoxList)
            
{
                
this.RemoveListItem((CheckBoxList) m_desObj);
            }

        }

        
        
private void ClearDes(ListBox objListBox)
        
{
            objListBox.Items.Clear();
        }

        
        
private void ClearDes(CheckBoxList objListBox)
        
{
            objListBox.Items.Clear();
        }


        
private string[] GetSelectedListBoxItems()
        
{
    
            
string[] strReturn ={"",""};
            ListBox objListBox 
= (ListBox)this.m_sourceObj;

            strReturn[
0= objListBox.SelectedItem.Text;
            strReturn[
1]= objListBox.SelectedItem.Value;
            
return strReturn;
    
        }

        
        
private string[] GetSelectedCheckListBoxItems()
        
{
    
            
string[] strReturn ={"",""};
            CheckBoxList objListBox 
= (CheckBoxList)this.m_sourceObj;

            strReturn[
0= objListBox.SelectedItem.Text;
            strReturn[
1]= objListBox.SelectedItem.Value;
            
return strReturn;
    
        }


        
private bool IsReduplicatedItem(ListBox objList,string strValue)
        
{
            
for (int i=0; i< objList.Items.Count; i++)
            
{
                
if (objList.Items[i].Value.ToString() == strValue)
                    
return true;
            }

            
return false;
        }

        
        
private bool IsReduplicatedItem(CheckBoxList objList,string strValue)
        
{
            
for (int i=0; i< objList.Items.Count; i++)
            
{
                
if (objList.Items[i].Value.ToString() == strValue)
                    
return true;
            }

            
return false;
        }


        
private bool IsSelected(ListBox objList)
        
{
            
if (objList.SelectedIndex<0)
                
return false;
            
else
                
return true;
        }


        
private bool IsSelected(CheckBoxList objCheckList)
        
{
            
if (objCheckList.SelectedIndex<0)
                
return false;
            
else
                
return true;
        }


        
private void AddListItem(ListBox objListSource,ListBox objList)
        
{
            
if (!IsSelected(objListSource))
            
{
                
return;
            }

            
string strName = GetSelectedListBoxItems()[0];
            
string strValue = GetSelectedListBoxItems()[1];
            
            
if (m_selMode == 1)
            
{
                ClearDes(objList);
                objList.Items.Add(
new ListItem(strName,strValue));
                
            }

            
else
            
{
    
                
if (objListSource.SelectionMode == ListSelectionMode.Multiple)
                
{
                    
                    
for (int i = 0; i < objListSource.Items.Count; i++)
                    
{
                        
if(objListSource.Items[i].Selected && (!IsReduplicatedItem(objList,objListSource.Items[i].Value.ToString())))
                        
{
                            objList.Items.Add(
new ListItem(objListSource.Items[i].Text,objListSource.Items[i].Value.ToString()));
                        }

                    }

                
    
                }

                
else
                
{
                    
if (!IsReduplicatedItem(objList,strValue))
                    
{
                        objList.Items.Add(
new ListItem(strName,strValue));
                    }

                }

                
            }

        
        }


        
private void AddListItem(CheckBoxList objCheckedListSource,CheckBoxList objCheckedList)
        
{
            
if (!IsSelected(objCheckedListSource))
            
{
                
return;
            }

            
string strName = GetSelectedCheckListBoxItems()[0];
            
string strValue = GetSelectedCheckListBoxItems()[1];
            
            
if (m_selMode == 1)
            
{
                ClearDes(objCheckedList);
                objCheckedList.Items.Add(
new ListItem(strName,strValue));
                
            }

            
else
            
{
                    
for (int i = 0; i < objCheckedListSource.Items.Count; i++)
                    
{
                        
if(objCheckedListSource.Items[i].Selected && (!IsReduplicatedItem(objCheckedList,objCheckedListSource.Items[i].Value.ToString())))
                        
{
                            objCheckedList.Items.Add(
new ListItem(objCheckedListSource.Items[i].Text,objCheckedListSource.Items[i].Value.ToString()));
                            
                        }

                    }

            }

        
        }


        
private void AddListItem(CheckBoxList objCheckedListSource,ListBox objList)
        
{
            
if (!IsSelected(objCheckedListSource))
            
{
                
return;
            }

            
string strName = GetSelectedCheckListBoxItems()[0];
            
string strValue = GetSelectedCheckListBoxItems()[1];
            
            
if (m_selMode == 1)
            
{
                ClearDes(objList);
                objList.Items.Add(
new ListItem(strName,strValue));
                
            }

            
else
            
{
                
for (int i = 0; i < objCheckedListSource.Items.Count; i++)
                
{
                    
if(objCheckedListSource.Items[i].Selected && (!IsReduplicatedItem(objList,objCheckedListSource.Items[i].Value.ToString())))
                    
{
                        objList.Items.Add(
new ListItem(objCheckedListSource.Items[i].Text,objCheckedListSource.Items[i].Value.ToString()));
                            
                    }

                }

            }

        
        }


        
private void AddListItem(ListBox objListSource,CheckBoxList objCheckedList)
        
{
            
if (!IsSelected(objListSource))
            
{
                
return;
            }

            
string strName = GetSelectedListBoxItems()[0];
            
string strValue = GetSelectedListBoxItems()[1];
            
            
if (m_selMode == 1)
            
{
                ClearDes(objCheckedList);
                objCheckedList.Items.Add(
new ListItem(strName,strValue));
                
            }

            
else
            
{
                
for (int i = 0; i < objListSource.Items.Count; i++)
                
{
                    
if(objListSource.Items[i].Selected && (!IsReduplicatedItem(objCheckedList,objListSource.Items[i].Value.ToString())))
                    
{
                        objCheckedList.Items.Add(
new ListItem(objListSource.Items[i].Text,objListSource.Items[i].Value.ToString()));
                            
                    }

                }

            }

        
        }


        
private void RemoveListItem(ListBox objList)
        
{
            
if (!IsSelected(objList))
            
{
                
return;
            }

            
if (objList.Items.Count > 0)
            
{
                
if (objList.SelectionMode == ListSelectionMode.Multiple)
                
{
                    
for (int i=objList.Items.Count-1;i>=0;i--)
                    
{
                        
if(objList.Items[i].Selected)
                        
{
                            objList.Items.RemoveAt(objList.SelectedIndex);
                        }

                    }

    
                }

                
else
                
{
                    objList.Items.RemoveAt(objList.SelectedIndex);
                }

            }

            
        }


        
private void RemoveListItem(CheckBoxList objList)
        
{
            
if (!IsSelected(objList))
            
{
                
return;
            }

            
if (objList.Items.Count > 0)
            
{
                    
for (int i=objList.Items.Count-1;i>=0;i--)
                    
{
                        
if(objList.Items[i].Selected)
                        
{
                            objList.Items.RemoveAt(objList.SelectedIndex);
                        }

                    }

    
            }

            
        }

    }

}