TreeLookUpEdit、SearchLookUpEdit、GridLookUpEdit 控件多选设置
这三类均属于LookUpEdit类,其多选显示文本方法,基本相似,有多选属性设置稍微有点区别:
SearchLookUpEdit、GridLookUpEdit 多选属性设置
lue.Properties.View.OptionsSelection.MultiSelect = true;
lue.Properties.View.OptionsSelection.MultiSelectMode = GridMultiSelectMode.CheckBoxRowSelect;
lue.Properties.View.OptionsSelection.CheckBoxSelectorColumnWidth = 40;
TreeLookUpEdit多选属性设置
treeLUE.Properties.TreeList.OptionsSelection.MultiSelect = true;
treeLUE.Properties.TreeList.OptionsSelection.MultiSelectMode = TreeListMultiSelectMode.RowSelect;
treeLUE.Properties.TreeList.OptionsView.CheckBoxStyle = DefaultNodeCheckBoxStyle.Check;
TreeLookUpEdit封装方法
/// <summary>
/// 绑定TreeLookUpEdit,同时返回选中节点ValueMember集合
/// </summary>
/// <param name="treeLUE">控件名称</param>
/// <param name="obj">数据源</param>
/// <param name="display">显示文本</param>
/// <param name="value">ValueMember值</param>
/// <param name="isMulti">多选</param>
/// <param name="expand">节点展开、收缩</param>
public static List<string> SetTreeLookUpEdit(TreeListLookUpEdit treeLUE,object obj,string display,string value,bool isMulti=false,bool expand=false)
{
var valueList = new List<string>();
// 绑定数据源
treeLUE.Properties.DataSource = obj;
treeLUE.Properties.DisplayMember = display;
treeLUE.Properties.ValueMember = value;
// 节点展开、收缩
treeLUE.Properties.AutoExpandAllNodes = expand;
// 多选
if (isMulti)
{
treeLUE.Properties.TreeList.OptionsSelection.MultiSelect = true;
treeLUE.Properties.TreeList.OptionsSelection.MultiSelectMode = TreeListMultiSelectMode.RowSelect;
treeLUE.Properties.TreeList.OptionsView.CheckBoxStyle = DefaultNodeCheckBoxStyle.Check;
var displayList = new List<string>();
// Close关闭时获取多选的值
treeLUE.CloseUp += (s, e) =>
{
displayList.Clear();
valueList.Clear();
var nodes = treeLUE.Properties.TreeList.GetAllCheckedNodes();
foreach (var node in nodes)
{
displayList.Add(node.GetDisplayText(display));
valueList.Add(node.GetDisplayText(value));// 也可以用:node.GetValue(value).ToString()
}
treeLUE.RefreshEditValue();
};
// DisplayText显示多选的值
treeLUE.Properties.CustomDisplayText += (s, e) =>
{
if (!treeLUE.IsPopupOpen)
e.DisplayText = string.Join(",", displayList.ToArray());
};
}
return valueList;
}
SearchLookUpEdit封装方法
/// <summary>
/// 绑定GridLookUpEdit
/// </summary>
/// <param name="slue">控件名称</param>
/// <param name="obj">数据源</param>
/// <param name="display">显示文本</param>
/// <param name="value">ValueMember值</param>
/// <param name="isMulti">多选</param>
public static List<string> SetSearchLookUpEdit(SearchLookUpEdit slue, object obj, string display, string value, bool isMulti = false)
{
var valueList = new List<string>();
// 绑定数据源
slue.Properties.DataSource = obj;
slue.Properties.DisplayMember = display;
slue.Properties.ValueMember = value;
// 其它属性设置
slue.Properties.NullText = "";
slue.Properties.View.RowHeight = 22;
slue.Properties.ImmediatePopup = true;
slue.Properties.View.BestFitColumns();
// 多选
if (isMulti)
{
slue.Properties.View.OptionsSelection.MultiSelect = true;
slue.Properties.View.OptionsSelection.MultiSelectMode = GridMultiSelectMode.CheckBoxRowSelect;
slue.Properties.View.OptionsSelection.CheckBoxSelectorColumnWidth = 40;
var view = slue.Properties.PopupView as GridView;
var displayList = new List<string>();
slue.CloseUp += (s, e) =>
{
displayList.Clear();
valueList.Clear();
var rows = view.GetSelectedRows();
foreach (var index in rows)
{
displayList.Add(view.GetRowCellValue(index, slue.Properties.DisplayMember).ToString());
valueList.Add(view.GetRowCellValue(index, slue.Properties.ValueMember).ToString());
}
slue.RefreshEditValue();
};
slue.Properties.CustomDisplayText += (s, e) =>
{
if (!slue.IsPopupOpen)
e.DisplayText = string.Join(",", displayList.ToArray());
};
}
return valueList;
}
SearchLookUpEdit、GridLookUpEdit 方法相似,仅需替换控制即可。
简单说一下方法中返回选中节点ValueMember集合:
其实如果是单选,用EditValue便可获取到ValueMember的值,但是多选时由于用的是DisplayText显示,此时EditValue是空值,无法获取到ValueMember集合,于是以上方法中用valueList获取该集合。
此外,如果是编辑窗口中也有TreeListUpEdit控件,此时用treeListUpEdit1.Text也是无法直接取值父窗口中表单对应的值,为空值(这点不知道Dev为何这样设计),此时同用需要在CustomDisplayText中获取
// CustomDisplayTex
treeListLookUpEdit1.CustomDisplayText += (s, e) =>
{
e.DisplayText= supplier.gridView1.GetFocusedRowCellDisplayText("UserName").ToString();
};
// 加载上面事件后,Text才能获取到值
treeListLookUpEdit1.Text 返回父窗口中表单选中字段"UserName"的值

浙公网安备 33010602011771号