Files
cyf ab56a9bcf7 基线 SVN r240
SVN-Revision: r240
2025-02-06 06:46:06 +00:00

703 lines
35 KiB
C#

using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraTab;
using Lskj.Business;
using Lskj.Business.Impl;
using Lskj.Control;
using Lskj.Control.BrowserSetting;
using Lskj.Control.Model;
using Lskj.Core;
using Lskj.Model;
using Lskj.PubArtworkDynamic.Control;
using Lskj.Util;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Net;
using System.Windows.Forms;
namespace Lskj.PubArtworkDynamic
{
public partial class FrmMain : BaseForm
{
/// <summary>
/// 模块类
/// </summary>
public ViewModel MainViewModel;
/// <summary>
/// 左侧节点上方主键
/// </summary>
private string leftTopGridIdValue
{
get
{
ModuleGridDetail moduleGridDetail = (ModuleGridDetail)MainViewModel.LeftTabControl.TabControlObj.SelectedTabPage.Controls[0];
string rtnString = "";
DataRow dataRow = moduleGridDetail.TopGridEx.GridView.GetFocusedDataRow();
if (dataRow != null)
{
if (!string.IsNullOrEmpty(MainViewModel.MoudleMainObj.UploadIdValueField) && dataRow.Table.Columns.Contains(MainViewModel.MoudleMainObj.UploadIdValueField))
{
rtnString = dataRow[MainViewModel.MoudleMainObj.UploadIdValueField] + "";
}
}
return rtnString;
}
}
/// <summary>
/// 左侧节点上方主键
/// </summary>
private string leftBottomGridIdValue
{
get
{
ModuleGridDetail moduleGridDetail = (ModuleGridDetail)MainViewModel.LeftTabControl.TabControlObj.SelectedTabPage.Controls[0];
string rtnString = "";
DataRow dataRow = moduleGridDetail.BottomGridEx.GridView.GetFocusedDataRow();
if (dataRow != null)
{
if (!string.IsNullOrEmpty(MainViewModel.MoudleMainObj.UploadIdValueField) && dataRow.Table.Columns.Contains(MainViewModel.MoudleMainObj.UploadIdValueField))
{
rtnString = dataRow[MainViewModel.MoudleMainObj.UploadIdValueField] + "";
}
}
return rtnString;
}
}
public FrmMain()
{
InitializeComponent();
Load += OnFrmMainLoad;
}
/// <summary>
/// 动态链接库Model
/// </summary>
public DynamicDllModel SysModel;
/// <summary>
/// 底部左侧搜索
/// </summary>
public MyControl BottomLeftSearchObj;
/// <summary>
/// 底部右侧搜索
/// </summary>
public MyControl BottomRightSearchObj;
#region 事件
/// <summary>
/// 加载完成后
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnFrmMainLoad(object sender, EventArgs e)
{
try
{
MainViewModel = new ViewModel(SysModel)
{
LeftTabControl = tabControlLeft,
RightTabControl = tabControlRight,
BottomLeftGridEx = gmLeft_Control,
BottomRightGridEx = gmRight_Control
};
InitControls(MainViewModel);
}
catch (Exception ex)
{
MessageUtil.Show(ex.Message);
}
}
/// <summary>
/// 底部左侧右键菜单回调
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnRightMenuLeftCallBack(object sender, EventArgs e)
{
}
/// <summary>
/// 底部右侧右键菜单回调
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnRightMenuRightCallBack(object sender, EventArgs e)
{
}
/// <summary>
/// 分隔条位置改变
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnSplitterPositionChanged(object sender, EventArgs e)
{
if (sender == this.splitMainControl)
{
IniHelper.Write(string.Format("Step_spliterPositionMain_{0}", this.MainViewModel.SysModel.ModuleCode), this.splitMainControl.SplitterPosition + "");
}
else if (sender == this.splitRightControl)
{
IniHelper.Write(string.Format("Step_spliterPositionRight_{0}", this.MainViewModel.SysModel.ModuleCode), this.splitRightControl.SplitterPosition + "");
}
else if (sender == this.splitBottomControl)
{
IniHelper.Write(string.Format("Step_spliterPositionBottom_{0}", this.MainViewModel.SysModel.ModuleCode), this.splitBottomControl.SplitterPosition + "");
}
}
#endregion
/// <summary>
/// 初始化控件
/// </summary>
private void InitControls(ViewModel mainViewModel)
{
InitializeSplitPosition();
InitBottomGrid();
InitLeftTabPages(mainViewModel.LeftDetailRows);
InitRightTabPages(mainViewModel.RightDetailRows);
InitDrag();
//初始化后刷新数据
ModuleGridDetail moduleGridDetail = MainViewModel.LeftTabControl.TabControlObj.SelectedTabPage.Controls[0] as ModuleGridDetail;
moduleGridDetail.SearchButton.PerformClick();
tabControlLeft.TabControlObj.SelectedPageChanged += OnLeftTabControlPageChanged;
tabControlRight.TabControlObj.SelectedPageChanged += OnRightTabControlPageChanged;
}
/// <summary>
/// 初始化左侧页签
/// </summary>
/// <param name="gridDetailRows"></param>
private void InitLeftTabPages(List<DataRow> gridDetailRows)
{
XtraTabPage mainPage = new XtraTabPage();
mainPage.Text = MainViewModel.SysModel.FormText;
ModuleGridDetail mainGridDetail = new ModuleGridDetail(null, SysModel.OtherParams());
mainGridDetail.MainViewModel = MainViewModel;
mainGridDetail.Dock = DockStyle.Fill;
mainGridDetail.Tag = MainViewModel.SysModel;
mainPage.Tag = mainGridDetail;
mainPage.Controls.Add(mainGridDetail);
tabControlLeft.TabControlObj.TabPages.Add(mainPage);
foreach (DataRow item in gridDetailRows)
{
if ((item["orderId"] + "").Equals("99") || (item["orderId"] + "").Equals("100"))
{
continue;
}
GridDetailModel model = new GridDetailModel(item);
model.SystemModel = new ModuleModel(MainImpl.GetSystemdllTab(model.UnionModule));//获取主模块构建类
XtraTabPage page = new XtraTabPage();
page.Text = model.DetailName;
ModuleGridDetail moduleGridDetail = new ModuleGridDetail(model, SysModel.OtherParams());
moduleGridDetail.MainViewModel = MainViewModel;
moduleGridDetail.Dock = DockStyle.Fill;
moduleGridDetail.Tag = model;
page.Tag = moduleGridDetail;
page.Controls.Add(moduleGridDetail);
tabControlLeft.TabControlObj.TabPages.Add(page);
}
}
/// <summary>
/// 初始化右侧页签
/// </summary>
/// <param name="gridDetailRows"></param>
private void InitRightTabPages(List<DataRow> gridDetailRows)
{
foreach (DataRow item in gridDetailRows)
{
GridDetailModel model = new GridDetailModel(item);
model.SystemModel = new ModuleModel(MainImpl.GetSystemdllTab(model.UnionModule));//获取主模块构建类
XtraTabPage page = new XtraTabPage();
page.Text = model.DetailName;
ModuleGrid moduleGrid = new ModuleGrid(model);
moduleGrid.MainViewModel = MainViewModel;
moduleGrid.Dock = DockStyle.Fill;
moduleGrid.Tag = model;
page.Tag = moduleGrid;
page.Controls.Add(moduleGrid);
tabControlRight.TabControlObj.TabPages.Add(page);
}
}
/// <summary>
/// 初始化下方表格
/// </summary>
private void InitBottomGrid()
{
gmLeft_Control.GridView.OptionsSelection.MultiSelect = false;
gmLeft_Control.GridView.OptionsSelection.MultiSelectMode = DevExpress.XtraGrid.Views.Grid.GridMultiSelectMode.RowSelect;
gmRight_Control.GridView.OptionsSelection.MultiSelect = false;
gmRight_Control.GridView.OptionsSelection.MultiSelectMode = DevExpress.XtraGrid.Views.Grid.GridMultiSelectMode.RowSelect;
//左侧
DataRow bottomLeftDetailRow = MainViewModel.LeftDetailRows.Where(n => (n["orderId"] + "").Equals("100")).FirstOrDefault();
if (bottomLeftDetailRow != null)
{
GridDetailModel bottomLeftModel = new GridDetailModel(bottomLeftDetailRow);
gmLeft_Control.Tag = bottomLeftModel;
bottomLeftModel.SystemModel = new ModuleModel(MainImpl.GetSystemdllTab(bottomLeftModel.UnionModule));
if (bottomLeftModel.IsReadOnly)
{
BottomLeftSearchObj = new MyControl(bottomLeftModel.DetailSql, gmLeft_Control);//构建主表mycontrol
}
else
{
BottomLeftSearchObj = new MyControl(bottomLeftModel.SystemModel.MenuSql, gmLeft_Control);//构建主表mycontrol
}
DataTable leftGridColumns = new DataTable();
if (!string.IsNullOrEmpty(bottomLeftModel.UnionModule))
{
leftGridColumns = BaseModuleImpl.GetBaseGridColumns(bottomLeftModel.UnionModule);
}
else
{
leftGridColumns = ReportImpl.GetReportDetailColumns(MainViewModel.SysModel.ModuleCode, bottomLeftModel.Id + "");
}
gmLeft_Control.GridView.OptionsBehavior.Editable = false;
gmLeft_Control.SetReadOnlyColumns(leftGridColumns, GridCustomColumnStruct.BaseMainGridView + bottomLeftModel.FormKey);//明细
DynamicModel leftDyncModel = new DynamicModuleModel(new string[] { bottomLeftModel.DetailName, ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, MainViewModel.SysModel.Privilege, bottomLeftModel.UnionModule, "0" });
if (!string.IsNullOrEmpty(bottomLeftModel.SystemModel.ModeCode))
{
gmLeft_Control.SetGridRightMenus(BaseModuleImpl.GetBaseGridRightMenus(bottomLeftModel.SystemModel.ModeCode), leftDyncModel, OnRightMenuLeftCallBack, BottomLeftSearchObj);
}
else if (!string.IsNullOrEmpty(bottomLeftModel.FormKey))
{
gmLeft_Control.SetGridRightMenus(BaseModuleImpl.GetBaseGridRightMenus(bottomLeftModel.FormKey), leftDyncModel, OnRightMenuLeftCallBack, BottomLeftSearchObj);
}
//绑定行改变事件
gmLeft_Control.GridView.FocusedRowChanged += OnGmLeftGridViewFocusedRowChanged;
//BottomLeftSearchObj.SearchGrid();
//右侧
DataTable bottomRightDetailRows = BaseModuleImpl.GetBaseDetailPages(bottomLeftModel.UnionModule);//获取关联模块配置明细
DataRow bottomRightDetailRow = bottomRightDetailRows.Rows.Count > 0 ? bottomRightDetailRows.Rows[0] : null;
if (bottomRightDetailRow != null)
{
GridDetailModel bottomRightModel = new GridDetailModel(bottomRightDetailRow);
gmRight_Control.Tag = bottomRightModel;
bottomRightModel.SystemModel = new ModuleModel(MainImpl.GetSystemdllTab(bottomRightModel.UnionModule));
if (bottomRightModel.IsReadOnly)
{
BottomRightSearchObj = new MyControl(bottomRightModel.DetailSql, gmRight_Control);//构建主表mycontrol
}
else
{
BottomRightSearchObj = new MyControl(bottomRightModel.SystemModel.MenuSql, gmRight_Control);//构建主表mycontrol
}
DataTable rightGridColumns = new DataTable();
if (!string.IsNullOrEmpty(bottomRightModel.UnionModule))
{
rightGridColumns = BaseModuleImpl.GetBaseGridColumns(bottomRightModel.UnionModule);
}
else
{
rightGridColumns = ReportImpl.GetReportDetailColumns(MainViewModel.SysModel.ModuleCode, bottomRightModel.Id + "");
}
gmRight_Control.GridView.OptionsBehavior.Editable = false;
gmRight_Control.SetReadOnlyColumns(rightGridColumns, GridCustomColumnStruct.BaseMainGridView + bottomRightModel.FormKey);//明细
DynamicModel rightDyncModel = new DynamicModuleModel(new string[] { bottomRightModel.DetailName, ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, MainViewModel.SysModel.Privilege, bottomRightModel.UnionModule, "0" });
if (!string.IsNullOrEmpty(bottomRightModel.SystemModel.ModeCode))
{
gmRight_Control.SetGridRightMenus(BaseModuleImpl.GetBaseGridRightMenus(bottomRightModel.SystemModel.ModeCode), rightDyncModel, OnRightMenuRightCallBack, BottomRightSearchObj);
}
else if (!string.IsNullOrEmpty(bottomRightModel.FormKey))
{
gmRight_Control.SetGridRightMenus(BaseModuleImpl.GetBaseGridRightMenus(bottomRightModel.FormKey), rightDyncModel, OnRightMenuRightCallBack, BottomRightSearchObj);
}
//BottomRightSearchObj.SearchGrid();
}
if (bottomLeftDetailRow != null && bottomRightDetailRow != null)
{
splitBottomControl.PanelVisibility = DevExpress.XtraEditors.SplitPanelVisibility.Both;
}
else if (bottomLeftDetailRow != null && bottomRightDetailRow == null)
{
splitBottomControl.PanelVisibility = DevExpress.XtraEditors.SplitPanelVisibility.Panel1;
}
else if (bottomLeftDetailRow == null && bottomRightDetailRow == null)
{
splitBottomControl.Visible = false;
}
}
}
/// <summary>
/// 初始化拖拽
/// </summary>
private void InitDrag()
{
////右上方向底部拖拽,经沟通不使用
//foreach (XtraTabPage xtraTabPage in tabControlRight.TabControlObj.TabPages)
//{
// ModuleGrid moduleGrid = (ModuleGrid)xtraTabPage.Controls[0];
// //右上方向底部左侧拖拽
// GridDragGrid dragTopToBottomLeftGrid = new GridDragGrid(moduleGrid.MainGridEx.GridView, gmLeft_Control.GridView);
// dragTopToBottomLeftGrid.OnDragComplete += new GridFragGridCompleteEventHandler(OnDragToBottomLeftGridCompleted);
// //右上方向底部右侧侧拖拽
// GridDragGrid dragTopToBottomRightGrid = new GridDragGrid(moduleGrid.MainGridEx.GridView, gmRight_Control.GridView);
// dragTopToBottomRightGrid.OnDragComplete += new GridFragGridCompleteEventHandler(OnDragToBottomRightGridCompleted);
//}
//右上方向左侧拖拽
foreach (XtraTabPage xtraTabPage in tabControlRight.TabControlObj.TabPages)
{
ModuleGrid moduleGrid = (ModuleGrid)xtraTabPage.Controls[0];
foreach (XtraTabPage leftXtraTabPage in tabControlLeft.TabControlObj.TabPages)
{
ModuleGridDetail moduleGridDetail = (ModuleGridDetail)leftXtraTabPage.Controls[0];
//向左侧上方拖拽
if (moduleGridDetail.DragDirection==0|| moduleGridDetail.DragDirection == 1)
{
GridDragGrid dragTopToLeftTopGrid = new GridDragGrid(moduleGrid.MainGridEx.GridView, moduleGridDetail.TopGridEx.GridView);
dragTopToLeftTopGrid.OnDragComplete += new GridFragGridCompleteEventHandler(OnDragToLeftTopGridCompleted);
}
//向左侧下方拖拽
if (moduleGridDetail.DragDirection == 0 || moduleGridDetail.DragDirection == 2)
{
GridDragGrid dragTopToLeftBottomGrid = new GridDragGrid(moduleGrid.MainGridEx.GridView, moduleGridDetail.BottomGridEx.GridView);
dragTopToLeftBottomGrid.OnDragComplete += new GridFragGridCompleteEventHandler(OnDragToLeftBottomGridCompleted);
}
}
}
//底部左侧向右上方拖拽
foreach (XtraTabPage xtraTabPage in tabControlRight.TabControlObj.TabPages)
{
ModuleGrid moduleGrid = (ModuleGrid)xtraTabPage.Controls[0];
GridDragGrid dragBottomLeftToTopGrid = new GridDragGrid(gmLeft_Control.GridView, moduleGrid.MainGridEx.GridView);
dragBottomLeftToTopGrid.OnDragComplete += new GridFragGridCompleteEventHandler(OnDragBottomLeftToTopGridCompleted);
}
}
/// <summary>
/// 移动文件
/// </summary>
/// <returns></returns>
private bool MoveFile(DataRow rowItem, string sid, string tid, out string Msg, string typeid = "", string ver = "")
{
bool isMove = false;
Msg = "";
string postUrl = "";
try
{
string fileId = rowItem["fileId"] + "";
string sNameSql = $"select vName from P_fm_FileTab where fileId = '{rowItem["fileId"]}'";
string sName = BaseImpl.GetResult(sNameSql) + "";
if (string.IsNullOrEmpty(typeid))
{
postUrl = "{0}Api/FileUploadApi.ashx?moduleId={1}&filename={2}&sid={3}&tid={4}&username={5}&userid={6}&method={7}";
postUrl = string.Format(postUrl, SystemInfo.Instance.OAUrl, SysModel.ModuleCode, sName, sid, tid, ERPInfo.Instance.UserName, ERPInfo.Instance.UserId, "MoveFileTo");
}
else
{
postUrl = "{0}Api/FileUploadApi.ashx?moduleId={1}&filename={2}&sid={3}&tid={4}&username={5}&userid={6}&typeid={7}&ver={8}&method={9}";
postUrl = string.Format(postUrl, SystemInfo.Instance.OAUrl, SysModel.ModuleCode, sName, sid, tid, ERPInfo.Instance.UserName, ERPInfo.Instance.UserId, typeid, ver, "MoveFileTo");
}
HttpTools.setting("application/x-www-form-urlencoded", null, null);
string result = "";
CookieCollection cookieCollection = null;
HttpWebResponse webResponse = HttpTools.Post(postUrl, null, null, HttpTools.Method.POST, out cookieCollection, out result);
if (webResponse != null && !string.IsNullOrEmpty(result))
{
JObject jsonObject = (JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(result);
string isSuccess = jsonObject["success"] + "";
if (isSuccess.Equals("True", StringComparison.CurrentCultureIgnoreCase))
{
string searchSql = @"update P_fm_FileTab set Pid='{1}'
where dllcoid = '{0}' and fileId='{2}' ";
searchSql = string.Format(searchSql, this.MainViewModel.SysModel.ModuleCode, tid, fileId);
SqlHelper.ExecuteNonQuery(searchSql);
isMove = true;
}
else
{
if (jsonObject.ContainsKey("msg"))
{
Msg = jsonObject["msg"] + "";
}
isMove = false;
}
}
else
{
isMove = false;
Msg = "上传请求失败";
}
}
catch (Exception ex)
{
Msg = ex.Message;
isMove = false;
}
return isMove;
}
/// <summary>
/// 获取查询条件
/// </summary>
/// <param name="model"></param>
/// <param name="rowItem"></param>
/// <returns></returns>
public string GetSearchSql(GridDetailModel model, DataRow rowItem)
{
string fieldName = !string.IsNullOrEmpty(model.UnionParentField) && rowItem.Table.Columns.Contains(model.UnionParentField) ? model.UnionParentField : MainViewModel.MoudleMainObj.ParmaryKey;
string sqlValue = model.IsReadOnly || model.IsChart ? model.DetailSql : model.SystemModel.MenuSql;
sqlValue = ReplaceHelper.ReplaceRowParam(rowItem, sqlValue);
if (ReplaceHelper.IsSelect(sqlValue) && !string.IsNullOrEmpty(model.UnionValue))
{
sqlValue = ReplaceHelper.ReplaceWhereCond(sqlValue) + string.Format(" and {0}='{1}'", model.UnionValue, rowItem[fieldName] + "");
}
if (!string.IsNullOrEmpty(model.UnionCond))
{
string UnionCond = ReplaceHelper.ReplaceRowParam(rowItem, model.UnionCond);
sqlValue += UnionCond;
}
return sqlValue;
}
/// <summary>
/// 初始化分隔条
/// </summary>
private void InitializeSplitPosition()
{
this.splitMainControl.SplitterPositionChanged += new EventHandler(OnSplitterPositionChanged);
this.splitRightControl.SplitterPositionChanged += new EventHandler(OnSplitterPositionChanged);
this.splitBottomControl.SplitterPositionChanged += new EventHandler(OnSplitterPositionChanged);
string mianSpliterPosition = IniHelper.Read(string.Format("Step_spliterPositionMain_{0}", this.MainViewModel.SysModel.ModuleCode));
if (!string.IsNullOrEmpty(mianSpliterPosition)) this.splitMainControl.SplitterPosition = Convert.ToInt32(mianSpliterPosition);
string rightSpliterPosition = IniHelper.Read(string.Format("Step_spliterPositionRight_{0}", this.MainViewModel.SysModel.ModuleCode));
if (!string.IsNullOrEmpty(rightSpliterPosition)) this.splitRightControl.SplitterPosition = Convert.ToInt32(rightSpliterPosition);
string bottomSpliterPosition = IniHelper.Read(string.Format("Step_spliterPositionBottom_{0}", this.MainViewModel.SysModel.ModuleCode));
if (!string.IsNullOrEmpty(bottomSpliterPosition)) this.splitBottomControl.SplitterPosition = Convert.ToInt32(bottomSpliterPosition);
}
/// <summary>
/// 向左侧上方拖拽完成时
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnDragToLeftTopGridCompleted(object sender, GridDragGridArgs e)
{
ModuleGridDetail moduleGridDetail = this.tabControlLeft.TabControlObj.SelectedTabPage.Controls[0] as ModuleGridDetail;
try//拖拽后执行文件分配
{
int[] selectRowIndexs = e.SourceGridViewObj.GetSelectedRows();
DataRow[] selectRows = new DataRow[selectRowIndexs.Length];
for (int i = 0; i < selectRowIndexs.Length; i++)
{
selectRows[i] = e.SourceGridViewObj.GetDataRow(selectRowIndexs[i]);
}
if (selectRows == null || selectRows.Length == 0) return;
DataRow targetRow = moduleGridDetail.TopGridEx.GetViewFocusedDataRow();
int[] records = new int[selectRows.Length];
string resultStr = string.Empty;
string result = string.Empty;
for (int i = 0; i < selectRows.Length; i++)
{
try
{
records[i] = ReplaceHelper.ReplaceRowParamCond(targetRow, MainViewModel.MoudleMainObj.DragCond) ? 1 : 0;
}
catch
{
records[i] = 0;
}
if (records[i] == 0)
{
resultStr += string.Format("文件{0}移动失败,原因:{1}\r\n", selectRows[i]["name"], "不满足移动条件");
continue;
}
string sid = targetRow.Table.Columns.Contains(MainViewModel.MoudleMainObj.MoveIdValueField) ? targetRow[MainViewModel.MoudleMainObj.MoveIdValueField] + "" : "";
bool isMove = MoveFile(selectRows[i], this.leftTopGridIdValue, sid, out result);
if (!isMove)
{
resultStr += string.Format("文件{0}移动失败,原因:{1}\r\n", selectRows[i]["name"], result);
}
}
if (!string.IsNullOrEmpty(resultStr))
{
MessageUtil.Show(resultStr);
}
}
catch (Exception ex)
{
MessageUtil.Show(ex.Message);
}
finally
{
int focusedTopRowHandle = moduleGridDetail.TopGridEx.GridView.FocusedRowHandle;
int focusedBottomRowHandle = moduleGridDetail.BottomGridEx.GridView.FocusedRowHandle;
moduleGridDetail.SearchMainObj.SearchLastGrid();
moduleGridDetail.RefushLeftDetail();
moduleGridDetail.TopGridEx.GridView.FocusedRowHandle = focusedTopRowHandle;
moduleGridDetail.BottomGridEx.GridView.FocusedRowHandle = focusedBottomRowHandle;
moduleGridDetail.OnGridViewRowClick(null, null);
}
}
/// <summary>
/// 向左侧下方拖拽完成时
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnDragToLeftBottomGridCompleted(object sender, GridDragGridArgs e)
{
ModuleGridDetail moduleGridDetail = this.tabControlLeft.TabControlObj.SelectedTabPage.Controls[0] as ModuleGridDetail;
try//拖拽后执行文件分配
{
int[] selectRowIndexs = e.SourceGridViewObj.GetSelectedRows();
DataRow[] selectRows = new DataRow[selectRowIndexs.Length];
for (int i = 0; i < selectRowIndexs.Length; i++)
{
selectRows[i] = e.SourceGridViewObj.GetDataRow(selectRowIndexs[i]);
}
if (selectRows == null || selectRows.Length == 0) return;
DataRow[] targetRows = new DataRow[] { moduleGridDetail.BottomGridEx.GetViewFocusedDataRow() };
if (selectRows.Length > 0 && targetRows.Length > 0)
{
int[,] records = new int[selectRows.Length, targetRows.Length];
string resultStr = string.Empty;
string result = string.Empty;
for (int i = 0; i < selectRows.Length; i++)
{
for (int j = 0; j < targetRows.Length; j++)
{
try
{
DataRow targetRow = targetRows[j];
records[i, j] = ReplaceHelper.ReplaceRowParamCond(targetRow, MainViewModel.MoudleMainObj.DragCond) ? 1 : 0;
string sid = targetRow.Table.Columns.Contains(MainViewModel.MoudleMainObj.MoveIdValueField) ? targetRow[MainViewModel.MoudleMainObj.MoveIdValueField] + "" : "";
bool isMove = MoveFile(selectRows[i], this.leftTopGridIdValue, sid, out result);
if (!isMove)
{
resultStr += string.Format("文件{0}移动失败,原因:{1}\r\n", selectRows[i]["name"], result);
}
}
catch
{
records[i, j] = 0;
}
if (records[i, j] == 0)
{
resultStr += string.Format("文件{0}移动失败,原因:{1}\r\n", selectRows[i]["name"], "不满足移动条件");
continue;
}
}
}
if (!string.IsNullOrEmpty(resultStr))
{
MessageUtil.Show(resultStr);
}
}
}
catch (Exception ex)
{
MessageUtil.Show(ex.Message);
}
finally
{
int focusedTopRowHandle = moduleGridDetail.TopGridEx.GridView.FocusedRowHandle;
int focusedBottomRowHandle = moduleGridDetail.BottomGridEx.GridView.FocusedRowHandle;
moduleGridDetail.SearchMainObj.SearchLastGrid();
moduleGridDetail.RefushLeftDetail();
moduleGridDetail.TopGridEx.GridView.FocusedRowHandle = focusedTopRowHandle;
moduleGridDetail.BottomGridEx.GridView.FocusedRowHandle = focusedBottomRowHandle;
moduleGridDetail.OnGridViewRowClick(null, null);
}
}
/// <summary>
/// 下方左侧向上方拖拽完成时
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnDragBottomLeftToTopGridCompleted(object sender, GridDragGridArgs e)
{
ModuleGridDetail moduleGridDetail = this.tabControlLeft.TabControlObj.SelectedTabPage.Controls[0] as ModuleGridDetail;
try//拖拽后执行文件分配
{
int[] selectRowIndexs = e.SourceGridViewObj.GetSelectedRows();
DataRow[] selectRows = new DataRow[selectRowIndexs.Length];
for (int i = 0; i < selectRowIndexs.Length; i++)
{
selectRows[i] = e.SourceGridViewObj.GetDataRow(selectRowIndexs[i]);
}
if (selectRows == null || selectRows.Length == 0) return;
DataRow targetRow = moduleGridDetail.TopGridEx.GetViewFocusedDataRow();
int[] records = new int[selectRows.Length];
string resultStr = string.Empty;
string result = string.Empty;
for (int i = 0; i < selectRows.Length; i++)
{
try
{
records[i] = ReplaceHelper.ReplaceRowParamCond(targetRow, MainViewModel.MoudleMainObj.DragCond) ? 1 : 0;
}
catch
{
records[i] = 0;
}
if (records[i] == 0)
{
resultStr += string.Format("文件{0}移动失败,原因:{1}\r\n", selectRows[i]["name"], "不满足移动条件");
continue;
}
string sid = selectRows[i]["Pid"] + "";
string tid = targetRow.Table.Columns.Contains(MainViewModel.MoudleMainObj.UploadIdValueField) ? targetRow[MainViewModel.MoudleMainObj.UploadIdValueField] + "" : "";
bool isMove = MoveFile(selectRows[i], sid, tid, out result);
if (!isMove)
{
resultStr += string.Format("文件{0}移动失败,原因:{1}\r\n", selectRows[i]["name"], result);
}
}
if (!string.IsNullOrEmpty(resultStr))
{
MessageUtil.Show(resultStr);
}
}
catch (Exception ex)
{
MessageUtil.Show(ex.Message);
}
finally
{
int focusedTopRowHandle = moduleGridDetail.TopGridEx.GridView.FocusedRowHandle;
int focusedBottomRowHandle = moduleGridDetail.BottomGridEx.GridView.FocusedRowHandle;
moduleGridDetail.SearchMainObj.SearchLastGrid();
moduleGridDetail.RefushLeftDetail();
moduleGridDetail.TopGridEx.GridView.FocusedRowHandle = focusedTopRowHandle;
moduleGridDetail.BottomGridEx.GridView.FocusedRowHandle = focusedBottomRowHandle;
moduleGridDetail.OnGridViewRowClick(null, null);
}
}
/// <summary>
/// 底部左侧行选中改变时刷新右侧数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnGmLeftGridViewFocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
{
GridView gridView = (GridView)sender;
DataRow rowItem = gridView.GetFocusedDataRow();
GridDetailModel gridDetailRightModel = gmRight_Control.Tag != null && gmRight_Control.Tag is GridDetailModel ? gmRight_Control.Tag as GridDetailModel : null;
if (gridDetailRightModel != null)
{
string searchSql = this.GetSearchSql(gridDetailRightModel, rowItem);
DataTable table = MainImpl.GetDataTableResult(searchSql);
this.gmRight_Control.LastSearchSql = searchSql;
this.gmRight_Control.SetGridViewDataSource(table);
}
}
/// <summary>
/// 左侧页签选中改变时
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnLeftTabControlPageChanged(object sender, TabPageChangedEventArgs e)
{
ModuleGridDetail moduleGridDetail = MainViewModel.LeftTabControl.TabControlObj.SelectedTabPage.Controls[0] as ModuleGridDetail;
moduleGridDetail.SearchButton.PerformClick();
}
/// <summary>
/// 右侧页签选中改变时
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnRightTabControlPageChanged(object sender, TabPageChangedEventArgs e)
{
ModuleGridDetail moduleGridDetail = MainViewModel.LeftTabControl.TabControlObj.SelectedTabPage.Controls[0] as ModuleGridDetail;
moduleGridDetail.RefushWaitDetail();
}
}
}