using DevExpress.XtraEditors;
using Gs.DevApp.ToolBox;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data;
using System.Windows.Forms;
namespace Gs.DevApp.UserControl
{
// 继承自XtraForm,这是DevExpress提供的增强型表单控件
public partial class SelectCgMx : XtraForm
{
// Web服务名称常量,用于调用后端接口
private readonly string _webServiceName = "MesInvItemArnManager/";
// 供应商ID和收料组织ID的私有变量
private string suppId = "";
private string receiveOrgId = "";
///
/// 构造函数
///
/// 供应商ID参数
/// 收料组织ID参数
public SelectCgMx(string _suppId, string _receiveOrgId)
{
// 初始化表单控件
InitializeComponent();
// 为GridView的列标题绘制事件添加处理方法,使用自定义绘制
this.gridView1.CustomDrawColumnHeader += (s, e) => { Gs.DevApp.ToolBox.UtilityHelper.CustomDrawColumnHeader(s, e); };
// 为GridView的鼠标抬起事件添加处理方法,实现自定义交互
this.gridView1.MouseUp += (s, e) => {
Gs.DevApp.ToolBox.UtilityHelper.CustomMouseUp(s, e, gcMain, gridView1);
// 全选/取消全选后立即更新汇总,缩短延迟时间
System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
timer.Interval = 80; // 缩短延迟确保操作完成后立即刷新
timer.Tick += (sender, args) =>
{
timer.Stop();
timer.Dispose();
UtilityHelper.RefreshConditionalSummary(gridView1); // 使用新的刷新方法
};
timer.Start();
};
// 配置复选列的排序和筛选选项,禁用排序和筛选功能
this.colChkInt.OptionsColumn.AllowSort = DevExpress.Utils.DefaultBoolean.False;
this.colChkInt.OptionsFilter.AllowAutoFilter = false;
this.colChkInt.OptionsFilter.AllowFilter = false;
this.colChkInt.OptionsFilter.AllowInHeaderSearch = DevExpress.Utils.DefaultBoolean.False;
// 设置单选按钮组默认选中第一项(采购类型)
radioGroup1.SelectedIndex = 0;
// 保存传入的供应商ID和收料组织ID
this.suppId = _suppId;
this.receiveOrgId = _receiveOrgId;
// 设置GridView的参数配置
Gs.DevApp.ToolBox.UtilityHelper.SetGridViewParameter(gridView1, null, null, null, "", null, null, false);
// 加载第一页数据
getPageList(1);
// 为"确定"按钮添加点击事件处理
btnIn.Click += (s, e) =>
{
// 提交编辑并更新当前行数据
gridView1.PostEditor();
gridView1.UpdateCurrentRow();
// 收集选中行的GUID
var list = new List();
DataTable dt = this.gcMain.DataSource as DataTable;
{
foreach (DataRow dr in dt.Rows)
{
string checkBox = dr["chkInt"].ToString();
string _guid = dr["guid"].ToString();
// 检查是否选中
if (Gs.DevApp.ToolBox.UtilityHelper.ToCheck(checkBox))
{
list.Add(_guid);
}
}
}
// 触发回调事件,传递选中的GUID列表,然后关闭表单
UpdateParent?.Invoke(this, new UpdateParentEventArgs { StringList = list });
Close();
};
// 为单选按钮组添加选中项变化事件,切换时重新加载数据
radioGroup1.SelectedIndexChanged += (s, e) =>
{
getPageList(1);
};
///
/// 条件汇总:只对选中(打勾)的行进行汇总
/// chkInt字段为true时才计算purchaseQty和wssl的合计
/// 使用一键式方法,包含条件汇总+实时刷新功能
///
UtilityHelper.SetupCompleteConditionalSummary(gridView1, "chkInt", true, new string[] { "purchaseQty", "wssl" });
}
///
/// 选择后的回调事件,用于向父窗体传递选中的数据
///
public event EventHandler UpdateParent;
///
/// 从服务器获取分页数据并绑定到GridView
///
/// 当前页码
private void getPageList(int curPage)
{
// 创建请求参数对象
var _obj = new
{
currentPage = curPage, // 当前页码
everyPageSize = 999999, // 每页记录数(这里设置了一个很大的值,可能是为了获取所有数据)
sortName = "", // 排序字段
keyWhere = "", // 查询条件
inBusType = (radioGroup1.SelectedIndex + 1), // 业务类型:1是采购,2是委外
inSupId = this.suppId, // 供应商ID
inReceiveOrgId = this.receiveOrgId, // 收料组织ID
};
// 将参数对象序列化为JSON字符串
var json = JsonConvert.SerializeObject(_obj);
try
{
// 调用Web服务获取数据
var strReturn = UtilityHelper.HttpPost("",
_webServiceName + "SelectForm", json);
// 解析返回结果为DataTable
var dd = UtilityHelper.ReturnToTablePage(strReturn);
var dt = dd.rtnData.list;
// 绑定数据到GridControl
gcMain.BindingContext = new BindingContext();
gcMain.DataSource = dt;
gcMain.ForceInitialize();
// 自动调整列宽并应用网格布局
gridView1.BestFitColumns();
Gs.DevApp.ToolBox.UtilityHelper.SetGridLayout(gridView1);
}
catch (Exception ex)
{
// 显示错误信息
MsgHelper.Warning("提示:" + ex.Message);
}
}
}
}