Files
ClientServerProject/ClientsLibrary/AccountSupport/FormAccountSelect.cs

182 lines
6.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using CommonLibrary;
using HslCommunication;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace ClientsLibrary
{
/**************************************************************************************************
*
* 时间: 2017年10月17日 08:02:15
* 功能说明: 本窗口提供一个账户选择的功能,比如在分配任务时,需要支持分配给某个部门的人,或是分配给
* 某个角色权限的人,可以在此处进行账户选择,根据实例化参数的不同来区分
* 举例: 选择某个工厂的一个账户需要这么实例化FormAccountSelect form = new FormAccountSelect("分厂示例一",1,1,null)
* 选择某个角色的一个账户需要这么实例化FormAccountSelect form = new FormAccountSelect("2487f33a8f22408ca4bbca5456a7eecb",1,1,null)
* 两者区分的条件是判断字符串的长度是否大于等于16
* 如果允许选择所有的账户的一个账户需要这么实例化FormAccountSelect form = new FormAccountSelect("",1,1,null)
* 当然也支持选择多个账户,直至选择完成所有的账户
*
***************************************************************************************************/
/// <summary>
/// 账户选择器的类,支持从服务器的账户数据上选择我们需要的账户
/// </summary>
public partial class FormAccountSelect : Form
{
#region Constructor
/// <summary>
/// 实例化一个选择服务器账户的窗口,该窗口可以根据工厂属性或是角色属性来筛选
/// </summary>
/// <param name="condition">筛选条件</param>
/// <param name="minSelected">选择账户数量的下限</param>
/// <param name="multiSelected">选择账户数量的上限</param>
/// <param name="selected">已选择的账户名</param>
public FormAccountSelect(string condition = null, int minSelected = 0, int maxSelected = int.MaxValue, List<string> selected = null)
{
InitializeComponent();
Icon = UserSystem.GetFormWindowIcon();
m_selected = selected;
m_condition = condition;
m_MaxSelected = maxSelected;
m_MinSelected = minSelected;
}
#endregion
#region Form Load
private void FormAccountSelect_Load(object sender, EventArgs e)
{
// 初始化
OperateResultString result = UserClient.Net_simplify_client.ReadFromServer(CommonHeadCode.SimplifyHeadCode., m_condition);
if (result.IsSuccess)
{
List<UserAccount> accounts = JArray.Parse(result.Content).ToObject<List<UserAccount>>();
// 添加到数据表
foreach (var m in accounts)
{
DataGridViewRow dgvr = dataGridView1.Rows[dataGridView1.Rows.Add()];
if(m_selected != null)
{
if(m_selected.Contains(m.UserName))
{
dgvr.Cells[0].Value = true;
}
}
dgvr.Cells[1].Value = m.UserName;
dgvr.Cells[2].Value = m.NameAlias;
dgvr.Cells[3].Value = m.Factory;
dgvr.Cells[4].Value = m.RegisterTime.ToString();
dgvr.Tag = m;
}
}
else
{
MessageBox.Show("请求服务器失败,请稍后重试!");
}
// 本地化
UILocalization();
// dataGridView1.RowsDefaultCellStyle.SelectionBackColor = dataGridView1.RowsDefaultCellStyle.BackColor;
// dataGridView1.RowsDefaultCellStyle.SelectionForeColor = dataGridView1.RowsDefaultCellStyle.ForeColor;
}
#endregion
#region Localization Support
private void UILocalization()
{
Text = UserLocalization.Localization.AccountSelect;
Column1.HeaderText = UserLocalization.Localization.AccountSelect;
Column2.HeaderText = UserLocalization.Localization.AccountName;
Column3.HeaderText = UserLocalization.Localization.AccountAlias;
Column4.HeaderText = UserLocalization.Localization.AccountFactory;
Column5.HeaderText = UserLocalization.Localization.AccountRegisterTime;
userButton_login.UIText = UserLocalization.Localization.ButtonEnsure;
}
#endregion
#region Public Property
/// <summary>
/// 返回已经选择的账户
/// </summary>
public List<UserAccount> SelectAccounts
{
get
{
return m_result;
}
}
#endregion
#region Button Click
private void userButton_login_Click(object sender, EventArgs e)
{
m_result = new List<UserAccount>();
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
DataGridViewRow dgvr = dataGridView1.Rows[i];
if (dgvr.Cells[0].Value != null)
{
if ((bool)dgvr.Cells[0].Value)
{
m_result.Add((UserAccount)dgvr.Tag);
}
}
}
if (m_result.Count < m_MinSelected || m_result.Count > m_MaxSelected)
{
MessageBox.Show(string.Format(UserLocalization.Localization.FormateBetweenTwoSize, m_MinSelected, m_MaxSelected));
return;
}
DialogResult = DialogResult.OK;
}
#endregion
#region Private Members
private List<string> m_selected;
private List<UserAccount> m_result;
private string m_condition;
private int m_MaxSelected = int.MaxValue;
private int m_MinSelected = 0;
#endregion
}
}