You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
397 lines
13 KiB
397 lines
13 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Data;
|
|
using System.Windows.Documents;
|
|
using System.Windows.Input;
|
|
using System.Windows.Media;
|
|
using System.Windows.Media.Imaging;
|
|
using System.Windows.Navigation;
|
|
using System.Windows.Shapes;
|
|
using System.Data;
|
|
|
|
namespace SiaSun.LMS.WPFClient.UC
|
|
{
|
|
/// <summary>
|
|
/// ucRelationEdit.xaml 的交互逻辑
|
|
/// </summary>
|
|
public partial class ucRelationEdit : UserControl
|
|
{
|
|
string strRelationCode = string.Empty;
|
|
Model.SYS_RELATION mSYS_RELATION = null;
|
|
string strTable1, strTable2;
|
|
string strWhere = string.Empty;
|
|
string strOrderFields = string.Empty;
|
|
|
|
/// <summary>
|
|
/// 权限关系编码
|
|
/// </summary>
|
|
public string U_RelationCode
|
|
{
|
|
get { return strRelationCode; }
|
|
set { strRelationCode = value; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// 查询条件
|
|
/// </summary>
|
|
public string U_Where
|
|
{
|
|
get { return strWhere; }
|
|
set { strWhere = value; }
|
|
}
|
|
/// <summary>
|
|
/// 排序
|
|
/// </summary>
|
|
public string U_OrderFields
|
|
{
|
|
get { return strOrderFields; }
|
|
set { strOrderFields = value; }
|
|
}
|
|
|
|
public ucRelationEdit()
|
|
{
|
|
InitializeComponent();
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 初始化控件
|
|
/// </summary>
|
|
public void U_InitControl()
|
|
{
|
|
//获得关系实例
|
|
mSYS_RELATION = MainApp._I_SystemService.RELATION_GetModel(strRelationCode);
|
|
if (mSYS_RELATION == null)
|
|
return;
|
|
|
|
//获得显示名称
|
|
string[] arStrHeaderText = mSYS_RELATION.RELATION_NAME.Split('-');
|
|
if (arStrHeaderText.Length == 2)
|
|
{
|
|
this.grpboxQuery.Header = string.Format(this.grpboxQuery.Header.ToString(),arStrHeaderText[0]);
|
|
this.grpboxUnSelected.Header = string.Format( this.grpboxUnSelected.Header.ToString(),arStrHeaderText[1]);
|
|
this.grpboxSelected.Header = string.Format(this.grpboxSelected.Header.ToString(),arStrHeaderText[1]);
|
|
}
|
|
|
|
//分解表名称
|
|
string[] arStrTableName = mSYS_RELATION.RELATION_CODE.Split('-');
|
|
if (arStrTableName.Length == 2)
|
|
{
|
|
strTable1 = arStrTableName[0];
|
|
strTable2 = arStrTableName[1];
|
|
|
|
//显示项目列表
|
|
RelationItem_Bind();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 权限管理项目列表
|
|
/// </summary>
|
|
private void RelationItem_Bind()
|
|
{
|
|
try
|
|
{
|
|
this.gridQuery.U_TableName = strTable1;
|
|
this.gridQuery.U_Fields = "*";
|
|
this.gridQuery.U_OrderField = mSYS_RELATION.RELATION_ID1;
|
|
this.gridQuery.U_AllowOperatData = false;
|
|
this.gridQuery.U_AllowChecked = false;
|
|
this.gridQuery.U_AllowPage = false;
|
|
|
|
//筛选条件
|
|
if (MainApp._ROLE.ROLE_ID != 0)
|
|
{
|
|
this.gridQuery.U_Where = mSYS_RELATION.RELATION_ID1 + string.Format("<>{0}", 0);
|
|
}
|
|
//初始化
|
|
this.gridQuery.U_InitControl();
|
|
|
|
this.gridQuery.gridApp.SelectionChanged += new SelectionChangedEventHandler(gridApp_SelectionChanged);
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MainApp._MessageDialog.ShowException(ex);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 选择行,显示关系数据
|
|
/// </summary>
|
|
void gridApp_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
|
{
|
|
this.LoadRelation();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 加载关系数据
|
|
/// </summary>
|
|
private void LoadRelation()
|
|
{
|
|
if (this.gridQuery.gridApp.SelectedItem == null)
|
|
return;
|
|
|
|
try
|
|
{
|
|
DataRowView rowView = this.gridQuery.gridApp.SelectedItem as DataRowView;
|
|
if (rowView == null)
|
|
return;
|
|
|
|
//清空显示项目
|
|
this.lboxSelected.Items.Clear();
|
|
this.lboxUnSelected.Items.Clear();
|
|
|
|
//获得关联的ID1
|
|
int intID1 = Convert.ToInt32(rowView[mSYS_RELATION.RELATION_ID1]);
|
|
string strAppendWhere = MainApp._ROLE.ROLE_ID == 0 ? "1=1" : mSYS_RELATION.RELATION_ID2 + string.Format(">0");
|
|
|
|
//加载所有的项目
|
|
DataTable tableItem = MainApp._I_BaseService.GetList(string.Format("SELECT {0},{1} FROM {2} WHERE {3} {4}",
|
|
mSYS_RELATION.RELATION_ID2,
|
|
mSYS_RELATION.RELATON_NAME2,
|
|
strTable2,
|
|
(strWhere.Length == 0 ? strAppendWhere : strAppendWhere + " AND " + strWhere),
|
|
strOrderFields == string.Empty ? string.Empty: string.Format(" ORDER BY {0}",strOrderFields)));
|
|
|
|
//加载所有存在的关系列表
|
|
IList<Model.SYS_RELATION_LIST> listRELATON_LIST = MainApp._I_SystemService.RELATION_LIST_GetList_ID1(mSYS_RELATION.RELATION_ID, intID1);
|
|
|
|
//显示未选择项目
|
|
Relation_Bind(intID1, tableItem, listRELATON_LIST);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MainApp._MessageDialog.ShowException(ex);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 显示未选择项目
|
|
/// </summary>
|
|
private void Relation_Bind(int ID1, DataTable tableAll, IList<Model.SYS_RELATION_LIST> listRELATON_LIST)
|
|
{
|
|
foreach (DataRow row in tableAll.Rows)
|
|
{
|
|
//获得关联的ID2
|
|
int intID2 = Convert.ToInt32(row[mSYS_RELATION.RELATION_ID2]);
|
|
|
|
//判断是否选择
|
|
if (listRELATON_LIST.Count(r => r.RELATION_ID2 == intID2) > 0)
|
|
{
|
|
AddImageItem(lboxSelected, row[mSYS_RELATION.RELATON_NAME2].ToString(), intID2);
|
|
}
|
|
else
|
|
{
|
|
AddImageItem(lboxUnSelected, row[mSYS_RELATION.RELATON_NAME2].ToString(), intID2);
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 添加列表项目
|
|
/// </summary>
|
|
private void AddImageItem(ListBox listBox, string text, object tag)
|
|
{
|
|
ListBoxItem item = new ListBoxItem();
|
|
item.BeginInit();
|
|
item.MouseDoubleClick += new MouseButtonEventHandler(item_MouseDoubleClick);
|
|
item.Margin = new Thickness(3);
|
|
item.Tag = tag;
|
|
listBox.Items.Add(item);
|
|
|
|
//添加显示内容
|
|
StackPanel panelItem = new StackPanel();
|
|
panelItem.Tag = tag;
|
|
panelItem.Orientation = Orientation.Horizontal;
|
|
item.Content = panelItem;
|
|
|
|
//添加图像
|
|
Image imageItem = new Image();
|
|
imageItem.Margin = new Thickness(5,2,10,2);
|
|
panelItem.Children.Add(imageItem);
|
|
|
|
//获得图像路径
|
|
//Uri url = new Uri(MainApp._APP_PATH + @"\@Images\report.png", UriKind.Absolute);
|
|
Uri url = new Uri("/@Images/report.png", UriKind.RelativeOrAbsolute);
|
|
BitmapImage imageURI = new BitmapImage(url);
|
|
imageItem.Source = imageURI;
|
|
|
|
//添加描述
|
|
TextBlock txtHeader = new TextBlock();
|
|
txtHeader.VerticalAlignment = System.Windows.VerticalAlignment.Center;
|
|
txtHeader.Text = text;
|
|
panelItem.Children.Add(txtHeader);
|
|
item.EndInit();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 添加或取消选择
|
|
/// </summary>
|
|
private void StackPanel_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
Button btn = e.OriginalSource as Button;
|
|
if (btn != null)
|
|
{
|
|
ListBoxItem[] arItems = null;
|
|
switch (btn.Name)
|
|
{
|
|
case "btnSelect":
|
|
arItems = this.lboxUnSelected.SelectedItems.Cast<ListBoxItem>().ToArray();
|
|
break;
|
|
case "btnUnSelect":
|
|
arItems = this.lboxSelected.SelectedItems.Cast<ListBoxItem>().ToArray();
|
|
break;
|
|
}
|
|
|
|
//添加选择
|
|
if (arItems.Length > 0)
|
|
{
|
|
foreach (ListBoxItem item in arItems)
|
|
{
|
|
this.ExchangeItem(item);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 双击移除选项
|
|
/// </summary>
|
|
void item_MouseDoubleClick(object sender, MouseButtonEventArgs e)
|
|
{
|
|
ListBoxItem itemSelected = e.Source as ListBoxItem;
|
|
if (itemSelected != null)
|
|
{
|
|
this.ExchangeItem(itemSelected);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 交换选项
|
|
/// </summary>
|
|
private void ExchangeItem(ListBoxItem item)
|
|
{
|
|
if (lboxUnSelected.Items.Contains(item))
|
|
{
|
|
lboxUnSelected.Items.Remove(item);
|
|
lboxSelected.Items.Add(item);
|
|
}
|
|
else if (lboxSelected.Items.Contains(item))
|
|
{
|
|
lboxSelected.Items.Remove(item);
|
|
lboxUnSelected.Items.Add(item);
|
|
}
|
|
}
|
|
|
|
#region ------按钮操作
|
|
|
|
/// <summary>
|
|
/// 按钮事件
|
|
/// </summary>
|
|
private void WrapPanel_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
Button btn = e.OriginalSource as Button;
|
|
if (btn != null)
|
|
{
|
|
switch (btn.Name)
|
|
{
|
|
case "btnSave":
|
|
this.Save();
|
|
break;
|
|
case "btnRefresh":
|
|
this.LoadRelation();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
//保存
|
|
private void Save()
|
|
{
|
|
if (this.gridQuery.U_SelectedItem == null)
|
|
return;
|
|
|
|
if (MainApp._MessageDialog.ShowDialog("Save",null) == Sid.Windows.Controls.TaskDialogResult.Ok)
|
|
{
|
|
try
|
|
{
|
|
DataRowView rowView = this.gridQuery.U_SelectedItem as DataRowView;
|
|
if (rowView == null)
|
|
return;
|
|
|
|
//获得关联的ID1
|
|
int intID1 = Convert.ToInt32(rowView[mSYS_RELATION.RELATION_ID1]);
|
|
|
|
//get all warehouses's id
|
|
int[] arRelationID2 = new int[this.lboxSelected.Items.Count];
|
|
for (int i = 0; i < lboxSelected.Items.Count; i++)
|
|
{
|
|
arRelationID2[i] = Convert.ToInt32((lboxSelected.Items[i] as ListBoxItem).Tag.ToString());
|
|
}
|
|
|
|
//Commit data
|
|
string strMessage = string.Empty;
|
|
bool boolResult = MainApp._I_SystemService.RELATION_LIST_Add(strRelationCode, intID1, arRelationID2, out strMessage);
|
|
MainApp._MessageDialog.ShowResult(boolResult, strMessage);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MainApp._MessageDialog.ShowException(ex);
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ------上下文菜单-排序
|
|
|
|
//上下文菜单事件
|
|
private void ContextMenu_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
MenuItem menuItem = e.OriginalSource as MenuItem;
|
|
if (menuItem != null)
|
|
{
|
|
switch (menuItem.Name)
|
|
{
|
|
case "menuItemUnSelectedOrder":
|
|
OrderListBoxItems(lboxUnSelected);
|
|
break;
|
|
case "menuItemSelectedOrder":
|
|
OrderListBoxItems(lboxSelected);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 重新排序
|
|
/// </summary>
|
|
private void OrderListBoxItems(ListBox lsBox)
|
|
{
|
|
if (lsBox.HasItems)
|
|
{
|
|
IList<ListBoxItem> listItem = new List<ListBoxItem>();
|
|
for (int i = lsBox.Items.Count - 1; i >= 0; i--)
|
|
{
|
|
ListBoxItem item = lsBox.Items[i] as ListBoxItem;
|
|
lsBox.Items.Remove(item);
|
|
|
|
listItem.Add(item);
|
|
}
|
|
|
|
//排序添加
|
|
foreach (ListBoxItem item in listItem.OrderBy(r => r.Content.ToString()))
|
|
{
|
|
lsBox.Items.Add(item);
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|