using System;
using System.Web.UI.WebControls;
namespace PowerSelect
{
/// <summary>
/// PowerSelect 的摘要说明:用于两个控件间的数据选择传递;目前只做到ListBox;以后根据需要会扩展。2004.8.23
/// </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(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);
}
}
public void Remove()
{
if (this.m_desObj is ListBox)
{
this.RemoveListItem((ListBox) m_desObj);
}
}
private void ClearDes(ListBox 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 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 IsSelected(ListBox objList)
{
if (objList.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 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);
}
}
}
}
}
浙公网安备 33010602011771号