Files
2026-07-10 15:25:05 +08:00

990 lines
40 KiB
C#

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;
using CommonLib.data;
using DevExpress.Utils;
using CommonLib;
using DevExpress.XtraGrid.Views.Grid;
using System.Data.SqlClient;
using DevExpress.XtraGrid.Columns;
using Lskj.Common;
using DevExpress.XtraEditors;
using CommonLib.utils;
using System.Diagnostics;
using ExcelPlus;
using Lskj.MyControl;
namespace Lskj.PubModuleTD
{
public partial class FrmMain : FormBase
{
#region 私有属性
/// <summary>
/// 左边显示类型
/// </summary>
private int LeftType { get; set; }
/// <summary>
/// 树控件表名
/// </summary>
private string TreeSql { get; set; }
/// <summary>
/// DbDataAdapter
/// </summary>
private SqlDataAdapter da { get; set; }
/// <summary>
/// 操作Dataset
/// </summary>
private DataSet ds { get; set; }
/// <summary>
/// 调用方案
/// </summary>
private int n { get; set; }
/// <summary>
/// 系统配置表
/// </summary>
private DataRow dtSystemDlltab;
/// <summary>
/// 数据库字段配置
/// </summary>
private DataRow dtSystemwordbooktabTag3;
/// <summary>
/// 查询唯一标示
/// </summary>
private DataRow dtSystemwordbooktaNo;
/// <summary>
///
/// </summary>
private List<ToolStripMenuItem> tsmMenuList = new List<ToolStripMenuItem>();
/// <summary>
/// 条件颜色
/// </summary>
private DataTable dtSysColorList;
/// <summary>
/// 搜索字段
/// </summary>
private DataTable cbSearchFiled;
/// <summary>
/// 添加字段
/// </summary>
private DataTable dtFields;
/// <summary>
/// 必须录入字段
/// </summary>
private DataRow[] nullableFields;
//表格编辑
private Boolean gridEdited;
//添加条件
private string addCond;
//修改条件
private string modifyCond;
//删除条件
private string deleteCond;
private bool needModified;
private bool inSummary = false;
private DataTable dtSum = new DataTable();//统计列
private int searchHide;//是否显示搜索
private int leftWidth; //宽度
private MySearchCreateControl mcc = new MySearchCreateControl();
#endregion
#region 构造函数
public FrmMain()
{
//DevExpress.XtraGrid.Localization.GridResLocalizer.Active = new Dxper.LocalizationCHS.Win.XtraGridCHS();
//DevExpress.XtraEditors.Controls.Localizer.Active = new Dxper.LocalizationCHS.Win.XtraEditorsCHS();
//DevExpress.XtraLayout.Localization.LayoutLocalizer.Active = new Dxper.LocalizationCHS.Win.XtraLayoutCHS();
//DevExpress.XtraPrinting.Localization.PreviewLocalizer.Active = new Dxper.LocalizationCHS.Win.XtraPrintingCHS();
InitializeComponent();
ds = new DataSet();
gcMain.gridView.IndicatorWidth = 40;
gcMain.gridView.DoubleClick += new EventHandler(GridViewpub_DoubleClick);
//gcMain.gridView.RowCellClick += new RowCellClickEventHandler(gridViewMain_RowCellClick);
gcMain.gridView.SelectionChanged += new DevExpress.Data.SelectionChangedEventHandler(gridMain_SelectionChanged);
//gcMain.gridView.RowStyle += new RowStyleEventHandler(gvList_RowCellStyle);
//gcHeader.gridView.RowCellClick += new RowCellClickEventHandler(gridViewLeft_RowCellClick);
gcHeader.gridView.SelectionChanged += new DevExpress.Data.SelectionChangedEventHandler(gridView_SelectionChanged);
gcHeader.gridView.OptionsBehavior.Editable = false;
gcMain.gridView.CellValueChanged += new DevExpress.XtraGrid.Views.Base.CellValueChangedEventHandler(gridBillInfo_CellValueChanged);
}
#endregion
#region 生成行号
protected void GridViewpub_CustomDrawRowIndicator(object sender, RowIndicatorCustomDrawEventArgs e)
{
e.Appearance.TextOptions.HAlignment = HorzAlignment.Center;
if (e.Info.IsRowIndicator)
{
if (e.RowHandle >= 0)
{
e.Info.DisplayText = (e.RowHandle + 1).ToString();
}
}
}
#endregion
#region 初始化数据
private void FrmGridTree_Load(object sender, EventArgs e)
{
this.Text = FormText;
gcMain.gridView.Appearance.HeaderPanel.TextOptions.HAlignment = HorzAlignment.Center;
dtSystemDlltab = SqlHelper.ExecuteDataSet("select * from P_systemDlltab where DLLCoid='" + DLLCoid + "'").Tables[0].Rows[0];
dtSystemDlltab["SQL"] = PubClass.ReqSqlParam(dtSystemDlltab["SQL"] + "", OperatorId, OperatorName);
LeftType = Convert.ToInt32(dtSystemDlltab["dllType"]);
gridEdited = (string.IsNullOrEmpty(dtSystemDlltab["selfEdit"] + "") || dtSystemDlltab["selfEdit"] + "" == "0" || dtSystemDlltab["selfEdit"] + "" == "False") ? false : true;
gcMain.gridView.OptionsBehavior.Editable = gridEdited;
btnSave.Enabled = gridEdited;
addCond = dtSystemDlltab["addCond"].ToString();
modifyCond = dtSystemDlltab["modifyCond"].ToString();
deleteCond = dtSystemDlltab["deleteCond"].ToString();
searchHide = Convert.ToInt32(dtSystemDlltab["searchHide"].ToString());
leftWidth = Convert.ToInt32(dtSystemDlltab["leftWidth"].ToString());
DataTable dtTag3 = SqlHelper.ExecuteDataSet("select * from P_systemwordbooktab where tab='" + DLLCoid + "' and fieldsqlTag=3").Tables[0];
if (dtTag3 != null && dtTag3.Rows.Count > 0)
dtSystemwordbooktabTag3 = dtTag3.Rows[0];
dtSystemwordbooktaNo = SqlHelper.ExecuteDataSet("select top 1 * from P_systemwordbooktab where tab='" + DLLCoid + "' order by orderid").Tables[0].Rows[0];
dtSysColorList = SqlHelper.ExecuteDataSet("select * from P_systemwordbookcolor where tab='" + DLLCoid + "' and useflag=0 order by orderid").Tables[0];
//加载数据
if (dtSystemDlltab["searchEnable"].ToString() == "1")
{
//InitData(dtSystemDlltab["SQL"].ToString());
}
//加载表格
InitColumns();
//初始化菜单
InitMenu();
if (searchHide == 1)
{
pl_right_where.Visible = false;
}
if (LeftType == 2)
{
string sql = "select * from p_systemwordbookgrid where fieldid=" + dtSystemwordbooktabTag3["id"] + " order by orderid";
DataTable dt = SqlHelper.ExecuteDataSet(sql).Tables[0];
for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow row = dt.Rows[i];
GridColumn gridColumn = new GridColumn();
gridColumn.FieldName = row["fieldname"]+"";
gridColumn.Name = row["fieldname"] + "";
gridColumn.VisibleIndex = i;
gridColumn.Caption = row["username"].ToString();
gridColumn.Width = Convert.ToInt32(row["width"]);
gridColumn.Visible = Convert.ToInt32(row["visible"]) == 0;
gcHeader.gridView.Columns.Add(gridColumn);
}
string leftSql = dtSystemwordbooktabTag3["fieldsql"] + "";
leftSql = PubClass.ReqSqlParam(leftSql, OperatorId, OperatorName);
gcHeader.gridControl.DataSource = SqlHelper.ExecuteDataSet(leftSql).Tables[0];
InitHeadMenu();
}
//模板添加删除修改导入导出
BtnAdd.Enabled = dtSystemDlltab["addEnable"].ToString() == "1";
BtnDel.Enabled = dtSystemDlltab["deleteEnable"].ToString() == "1";
btnSave.Enabled = dtSystemDlltab["modifyEnable"].ToString() == "1" && gridEdited;
gcMain.gridView.OptionsBehavior.Editable = dtSystemDlltab["modifyEnable"].ToString() == "1" && gridEdited;
btnImprt.Enabled = dtSystemDlltab["importEnable"].ToString() == "1";
btnExport.Enabled = dtSystemDlltab["exportEnable"].ToString() == "1";
needModified = dtSystemDlltab["modifyEnable"].ToString() == "1";
SearchCraeteControl();
//查询统计列
string isSumSql = "select * from p_systemwordbooktab where tab='" + DLLCoid + "' and isnull(vislble,0)=0 and isnull(calcExpr,'')<>''order by calcOrder asc";
dtSum = SqlHelper.ExecuteDataSet(isSumSql).Tables[0];
}
public void SearchCraeteControl()
{
string sql = string.Format("exec p_getControlLocation '{0}','{1}','{2}'", dtSystemwordbooktabTag3["fieldKey"], DLLCoid, OperatorName);
DataTable dt = SqlHelper.ExecuteDataSet(sql).Tables[0];
string condSql = string.Format("select * from p_systembillsourcecond where formKey='{0}'", dtSystemwordbooktabTag3["fieldKey"]);
mcc.LoginId = OperatorId;
mcc.LoginName = OperatorName;
mcc.SearchSql = dtSystemwordbooktabTag3["fieldsql"] + " where 1=1 ";
mcc.ctr = pl_right_where;
mcc.gce = gcHeader.gridControl;
//mcc.gcLeft = gcLeft;
//mcc.tvLeft = tvList;
mcc.dllType = LeftType;
mcc.condDt = SqlHelper.ExecuteDataSet(condSql).Tables[0];
if (dt != null && dt.Rows.Count > 0)
{
CreateControlModel cm = new CreateControlModel();
cm.dt = dt;
cm.ctr = pl_right_where;
cm.loginid = OperatorId;
cm.loginname = OperatorName;
int height = mcc.CreateControlByModel(cm);
pl_right_where.Height = height;
Control[] ctl = pl_right_where.Controls.Find("btnCondSearch", true);
if ((ctl != null) && (ctl.Length > 0))
{
(ctl[0] as SimpleButton).Width = 72;
}
}
}
/// <summary>
///
/// </summary>
public void InitMenu()
{
GridMenu gm = new GridMenu(FormText, OperatorId, OperatorName, Privilege, DLLCoid, "", gcMain.gridControl);
gm.DirId = dtSystemDlltab["dirid"] + "";
gm.filedKey = dtSystemwordbooktaNo["fieldname"].ToString();
gm.BindGridMenuWQ(DLLCoid);
gm.OnGridMenuClickRefreshData += new EventHandler(gm_OnGridMenuClickRefreshDataDetail);
}
/// <summary>
/// 右键菜单回调函数
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void gm_OnGridMenuClickRefreshDataDetail(object sender, EventArgs e)
{
int[] rows = gcHeader.gridView.GetSelectedRows();
if (rows != null && rows.Count() > 0)
{
DataRow row = gcHeader.gridView.GetDataRow(rows[0]);
this.HandleAddButtonState(row);
initDetailData();
}
}
/// <summary>
/// 顶部右键菜单
/// </summary>
public void InitHeadMenu()
{
GridMenu gm = new GridMenu(FormText, OperatorId, OperatorName, Privilege, DLLCoid, "", gcHeader.gridControl);
gm.DirId = dtSystemDlltab["dirid"] + "";
gm.filedKey = dtSystemwordbooktaNo["fieldname"].ToString();
gm.BindGridMenuWQ(dtSystemwordbooktabTag3["fieldKey"].ToString());
gm.OnGridMenuClickRefreshData += new EventHandler(gm_OnGridMenuClickRefreshDataHeader);
}
/// <summary>
/// 右键菜单回调函数
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void gm_OnGridMenuClickRefreshDataHeader(object sender, EventArgs e)
{
gcHeader.gridControl.DataSource = SqlHelper.ExecuteDataSet(dtSystemwordbooktabTag3["fieldsql"] + "").Tables[0];
}
#endregion
#region 绑定数据
public void InitData(string sql)
{
int oldRowHandle = (gcMain.gridControl.MainView as GridView).FocusedRowHandle;
//这个绑定数据源
da = SqlHelper.ExecuteAdapter(CommandType.Text, sql);
if (ds != null && ds.Tables.Count > 0)
ds.Clear();
da.Fill(ds);
SqlCommandBuilder cb = new SqlCommandBuilder(da);
gcMain.gridControl.DataSource = ds.Tables[0];
(gcMain.gridControl.MainView as GridView).ClearSelection();
(gcMain.gridControl.MainView as GridView).FocusedRowHandle = oldRowHandle;
(gcMain.gridControl.MainView as GridView).SelectRow(oldRowHandle);
}
#endregion
#region 加载表格列
/// <summary>
/// 加载表格列头
/// </summary>
/// <param name="tab"></param>
public void InitColumns()
{
SqlParameter[] p =
{
new SqlParameter("@modid",SqlDbType.VarChar,20),
new SqlParameter("@operatorname",SqlDbType.VarChar,20)
};
p[0].Value = DLLCoid;
p[1].Value = OperatorName;
DataTable dt = SqlHelper.ExecuteDataSet(CommandType.StoredProcedure, "[p_getBaseModuleField]", "temp", p).Tables[0];
nullableFields = dt.Rows.OfType<DataRow>().Where(x => x["tagid"] + "" == "1").ToArray();
gcMain.SetColumns2(dt);
}
#endregion
#region 添加数据
/// <summary>
/// 添加数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BtnAdd_Click(object sender, EventArgs e)
{
string fieldsqlid = string.Empty;
string fieldsqlname = string.Empty;
string strTag = string.Empty;
string jsonData = string.Empty;
if (!string.IsNullOrEmpty(dtSystemDlltab["AddDllName"] + ""))
{
if (LeftType == 2)
{
int[] rows = gcHeader.gridView.GetSelectedRows();
if (rows.Length == 0)
{
XtraMessageBox.Show("请选择类别", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
DataRow row = gcHeader.gridView.GetDataRow(rows[0]);
fieldsqlid = row[dtSystemwordbooktabTag3["fieldsqlid"] + ""] + "";
fieldsqlname = row[dtSystemwordbooktabTag3["fieldsqlname"] + ""] + "";
DataTable dtGcHeader = gcHeader.gridControl.DataSource as DataTable;
if (dtGcHeader != null && dtGcHeader.Rows.Count > 0)
{
DataTable dtTemp = dtGcHeader.Clone();
dtTemp.ImportRow(row);
jsonData = dtTemp.ToJson();
}
}
string[] args = {
FormText,
OperatorId,
OperatorName,
Privilege,
DLLCoid,
"",
"",
"",
fieldsqlid,
fieldsqlname,
strTag,
"",
"",
"",
jsonData
};
IForm form = PubUtil.LoadDllForm(dtSystemDlltab["AddDllName"] + "", args);
DialogResult result = form.SubForm.ShowDialog();
InitData(dtSystemDlltab["SQL"] + " where 1=1 and " + dtSystemwordbooktabTag3["fieldsqlid"] + " like '" + fieldsqlid + "%' ");
}
else
{
AddRow(gcMain.gridView);
}
}
/// <summary>
/// 添加行
/// </summary>
/// <param name="view"></param>
protected void AddRow(DevExpress.XtraGrid.Views.Grid.GridView view)
{
int prevDataRowIndex = view.GetFocusedDataSourceRowIndex();
view.AddNewRow();
int[] rows = gcHeader.gridView.GetSelectedRows();
DataRow row = gcHeader.gridView.GetDataRow(rows[0]);
GridColumnCollection gcMainColumns = gcMain.gridView.Columns;
//默认值
foreach (GridColumn item in gcMain.gridView.Columns)
{
if (item.Tag is MyTagModel)
{
MyTagModel cmt = item.Tag as MyTagModel;
string defaultValue = cmt.DefaultValue;
if (string.IsNullOrEmpty(defaultValue)) continue;
List<String> list = PubClass.GetParamValue(defaultValue);
for (int i = 0; i < list.Count; i++)
{
if (list[i].Contains("##"))
{
string fileName = list[i].Replace("##", "").Replace("{", "").Replace("}", "");
defaultValue = defaultValue.Replace(list[i], row[fileName] + "");
}
}
defaultValue = PubClass.GetDefaultValue(defaultValue, OperatorId, OperatorName);
if (!string.IsNullOrEmpty(defaultValue))
{
view.SetRowCellValue(view.FocusedRowHandle, item, defaultValue);
}
}
}
//关键字段赋值
if (LeftType == 2)
{
GridColumn tmpcol = gcMain.gridView.Columns[dtSystemwordbooktabTag3["fieldname"] + ""];
view.SetRowCellValue(gcMain.gridView.FocusedRowHandle, tmpcol, row[dtSystemwordbooktabTag3["fieldsqlid"] + ""]);
view.UpdateCurrentRow();
view.ShowEditor();
}
}
#endregion
#region 删除数据
private void BtnDel_Click(object sender, EventArgs e)
{
int[] rowid = gcMain.gridView.GetSelectedRows();
if (rowid.Length == 0)
{
MessageBox.Show("没有选择要删除数据", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
}
else
{
if (MessageBox.Show("您确定要删除选中记录?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
string ids = string.Empty;
foreach (int rid in rowid)
{
DataRow dr = gcMain.gridView.GetDataRow(rid);
string ParmarKey = dr[dtSystemwordbooktaNo["fieldname"] + ""] + "";
if (string.IsNullOrEmpty(ParmarKey))
{
gcMain.gridView.DeleteRow(gcMain.gridView.FocusedRowHandle);
}
else
{
ids += "'" + ParmarKey + "',";
}
}
if (!string.IsNullOrEmpty(ids))
{
string sql = "delete from " + dtSystemDlltab["SQLDT1"] + " where " + dtSystemwordbooktaNo["fieldname"] + " in(" + ids.Trim(',') + ")";
SqlHelper.ExecuteNonQuery(sql);
DataRow row = gcHeader.gridView.GetDataRow(gcHeader.gridView.GetSelectedRows()[0]);
InitData(dtSystemDlltab["SQL"] + " where 1=1 and " + dtSystemwordbooktabTag3["fieldsqlid"] + " = '" + row[dtSystemwordbooktabTag3["fieldsqlid"] + ""] + "' ");
//InitData(dtSystemDlltab["SQL"] + "");
MessageBox.Show("记录删除成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
SqlHelper.AddLogTab(DLLCoid, FormText + "-->删除", FormText + "[" + ids + "]", FormText, OperatorName);
}
else
{
MessageBox.Show("记录删除成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
}
/// <summary>
/// 验证是否可以删除
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void gridViewMain_RowCellClick(object sender, RowCellClickEventArgs e)
{
DataRow row = gcMain.gridView.GetDataRow(e.RowHandle);
this.HandleDelButtonState(row); // 验证删除按钮是否可以用
}
private void gridMain_SelectionChanged(object sender, DevExpress.Data.SelectionChangedEventArgs e)
{
int[] rowHandle = gcMain.gridView.GetSelectedRows();
if ((rowHandle == null) || (rowHandle.Length < 1))
return;
DataRow row = gcMain.gridView.GetDataRow(rowHandle[0]);
this.HandleDelButtonState(row); // 验证删除按钮是否可以用
}
#endregion
#region 查询
/// <summary>
/// 查询
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnSearch_Click(object sender, EventArgs e)
{
}
#endregion
#region 保存
private void btnSave_Click(object sender, EventArgs e)
{
if (gridRequired())
{
try
{
da.Update(ds);
}
catch (DBConcurrencyException dce)
{
// 并发异常
XtraMessageBox.Show("数据已更新,请刷新后重试.");
return;
}
catch (Exception ex)
{
if (ex.Message.IndexOf("ix", StringComparison.OrdinalIgnoreCase) != -1)
{
XtraMessageBox.Show("系统检测到录入信息重复,请检查", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
else
{
XtraMessageBox.Show(ex.Message);
return;
}
}
XtraMessageBox.Show("修改成功");
}
}
/// <summary>
/// 表格必须录入验证
/// </summary>
/// <returns></returns>
private bool gridRequired()
{
DataTable dtBillItem = gcMain.gridControl.DataSource as DataTable;
DataColumnCollection dtBillRow = dtBillItem.Columns;
GridView gridView = gcMain.gridView;
GridColumnCollection gridColumns = gridView.Columns;
foreach (DataRow drGrid in dtBillItem.Rows)
{
foreach (DataRow dr in nullableFields)
{
string fieldName = dr["fieldName"] + "";
string fieldText = dr["username1"] + "";
if (string.IsNullOrEmpty(drGrid[fieldName] + ""))
{
XtraMessageBox.Show(string.Format("[{0}] 不能为空", fieldText));
gridView.Focus();
gridView.FocusedRowHandle = dtBillItem.Rows.IndexOf(drGrid);
gridView.FocusedColumn = gridColumns[fieldName];
gridView.SelectCell(gridView.FocusedRowHandle, gridColumns[fieldName]);
gridView.ShowEditorByMouse();
return false;
}
}
}
return true;
}
#endregion
#region 打印
private void BtnPrint_Click(object sender, EventArgs e)
{
PubClass.Preview(gcMain.gridControl);
}
#endregion
#region 修改
private void GridViewpub_DoubleClick(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(dtSystemDlltab["AddDllName"] + ""))
{
if (LeftType == 2)
{
bool isReflash = UpdateModel();
if (isReflash)
{
int[] rows = gcMain.gridView.GetSelectedRows();
if (rows.Length == 0)
return;
DataRow row = gcMain.gridView.GetDataRow(rows[0]);
InitData(dtSystemDlltab["SQL"] + " where 1=1 and " + dtSystemwordbooktabTag3["fieldname"] + " like '" + row[dtSystemwordbooktabTag3["fieldsqlid"] + ""] + "%' ");
}
}
else
{
bool isReflash = UpdateModel();
if (isReflash)
{
InitData(dtSystemDlltab["SQL"].ToString());
}
}
}
}
private void tsmUpdate_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(dtSystemDlltab["AddDllName"] + ""))
{
bool isReflash = UpdateModel();
if (isReflash)
{
InitData(dtSystemDlltab["SQL"] + "");
}
}
}
public bool UpdateModel()
{
int[] rows = gcMain.gridView.GetSelectedRows();
if (rows.Length > 0)
{
DataRow dr = gcMain.gridView.GetDataRow(rows[0]);
//判断修改条件是否符合
Boolean canModify = string.IsNullOrEmpty(modifyCond);
if (needModified == true)
{
string tempCond = modifyCond;
if (!canModify)
{
tempCond = PubClass.ReqSqlParam(tempCond, OperatorId, OperatorName);
tempCond = PubClass.ReqSqlWhere(dr, tempCond);
canModify = Convert.ToBoolean(Evaluator.Eval(tempCond));
}
}
else
{
canModify = false;
}
string productId = dr[dtSystemwordbooktaNo["fieldname"] + ""].ToString();
string[] args = {
FormText,
OperatorId,
OperatorName,
Privilege,
DLLCoid,
"",
Convert.ToInt32( !canModify).ToString(),
productId,
"",
"",
""
};
IForm form = PubUtil.LoadDllForm(dtSystemDlltab["AddDllName"] + "", args);
form.SubForm.ShowDialog();
}
return true;
}
#endregion
#region 动态加载菜单
/// <summary>
///动态加载菜单
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void cmsGrid_Opening(object sender, CancelEventArgs e)
{
cmsGrid.Items.Clear();
List<ToolStripMenuItem> listQQ = new List<ToolStripMenuItem>();
List<ToolStripMenuItem> listWWW = new List<ToolStripMenuItem>();
int[] rowCount = gcMain.gridView.GetSelectedRows();
if (rowCount.Length > 0)
{
DataRow row = gcMain.gridView.GetDataRow(rowCount[0]);
GridColumnCollection columns = gcMain.gridView.Columns;
for (int i = 0; i < columns.Count; i++)
{
GridColumn gcItem = columns[i];
string tag = gcItem.Tag + "";
if (tag == "qq")
{
if (!string.IsNullOrEmpty(row[gcItem.Name] + ""))
{
ToolStripMenuItem item = new ToolStripMenuItem("(" + gcItem.Caption + ")" + row[gcItem.Name] + "", global::Lskj.PubModuleTD.Properties.Resources.qq);
item.Tag = row[gcItem.Name];
item.Click += new EventHandler(item_qq_Click);
listQQ.Add(item);
}
}
if (tag == "www")
{
if (!string.IsNullOrEmpty(row[gcItem.Name] + ""))
{
ToolStripMenuItem item = new ToolStripMenuItem("(" + gcItem.Caption + ")" + row[gcItem.Name] + "", global::Lskj.PubModuleTD.Properties.Resources.www);
item.Tag = row[gcItem.Name];
item.Click += new EventHandler(item_www_Click);
listWWW.Add(item);
}
}
}
}
cmsGrid.Items.AddRange(tsmMenuList.ToArray());
cmsGrid.Items.AddRange(listQQ.ToArray());
cmsGrid.Items.AddRange(listWWW.ToArray());
}
#endregion
#region 打开QQ
protected void item_qq_Click(object sender, EventArgs e)
{
ToolStripMenuItem t = (ToolStripMenuItem)sender;
string text = t.Tag + "";
if (string.IsNullOrEmpty(text))
{
MessageBox.Show("请输入您的QQ号码", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
Process p = new Process();
ProcessStartInfo ps = new ProcessStartInfo();
string Url = string.Format(@"tencent://message/?Menu=yes&uin={0}", text);
ps.FileName = @"iexplore.exe";
ps.Arguments = Url;
ps.UseShellExecute = true;
ps.RedirectStandardInput = false;
//ps.WindowStyle = ProcessWindowStyle.Hidden;
p.StartInfo = ps;
p.Start();
}
#endregion
#region 打开WWW
protected void item_www_Click(object sender, EventArgs e)
{
ToolStripMenuItem t = (ToolStripMenuItem)sender;
string url = t.Tag + "";
if (string.IsNullOrEmpty(url))
{
MessageBox.Show("请输入您要打开网址", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
System.Diagnostics.Process.Start("iexplore.exe", url);
}
#endregion
#region 顶部gird点击事件
private void gridViewLeft_RowCellClick(object sender, RowCellClickEventArgs e)
{
initDetailData();
}
private void gridView_SelectionChanged(object sender, DevExpress.Data.SelectionChangedEventArgs e)
{
initDetailData();
}
/// <summary>
/// 获取底部grid数据
/// </summary>
/// <param name="row"></param>
public void initDetailData()
{
int[] rowHandle = gcHeader.gridView.GetSelectedRows();
if ((rowHandle == null) || (rowHandle.Length < 1))
return;
DataRow row = gcHeader.gridView.GetDataRow(rowHandle[0]);
this.HandleAddButtonState(row);
string initSql = dtSystemDlltab["SQL"] + " where 1=1 and " + dtSystemwordbooktabTag3["fieldsqlid"] + " = '" + row[dtSystemwordbooktabTag3["fieldsqlid"] + ""] + "' ";
InitData(initSql);
//MessageBox.Show(initSql);
}
#endregion
#region 添加、删除按钮处理
/// <summary>
/// 处理添加按钮
/// </summary>
private void HandleAddButtonState(DataRow dr)
{
string tempCond = addCond;
bool canAdd = string.IsNullOrEmpty(addCond);
if (!string.IsNullOrEmpty(addCond))
{
tempCond = PubClass.ReqSqlWhere(dr, PubClass.ReqSqlParam(tempCond, OperatorId, OperatorName));
canAdd = Convert.ToBoolean(Evaluator.Eval(tempCond));
}
BtnAdd.Enabled = canAdd;
}
/// <summary>
/// 处理删除按钮
/// </summary>
private void HandleDelButtonState(DataRow dr)
{
string tempCond = deleteCond;
bool canDel = string.IsNullOrEmpty(deleteCond);
if (!string.IsNullOrEmpty(tempCond))
{
tempCond = PubClass.ReqSqlWhere(dr, PubClass.ReqSqlParam(tempCond, OperatorId, OperatorName));
canDel = Convert.ToBoolean(Evaluator.Eval(tempCond));
}
BtnDel.Enabled = canDel;
}
#endregion
#region 窗体关闭事件
protected override void OnClosed(EventArgs e)
{
base.OnClosed(e);
if (PubUtil.ModuleForms.ContainsKey(ModuleId))
{
DllModule dm = PubUtil.ModuleForms[ModuleId];
if (dm != null)
{
dm.ModuleForm = null;
dm.ModuleInPtr = IntPtr.Zero;
PubUtil.ModuleForms.Remove(ModuleId);
}
}
}
#endregion
#region 帮助手册
private void btnHelp_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(DLLCoid))
{
MessageBox.Show("物料编码不存在", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
int id = 0;
object obj = SqlHelper.ExecuteScalar(CommandType.Text, "select dirid from P_fm_DirectoryTab where ParentId=3 and PID='" + DLLCoid + "'");
id = obj == null ? 0 : Convert.ToInt32(obj);
if (id == 0)
{
string sql = "insert into P_fm_DirectoryTab (sName,ParentId,creator,SpeciesNo,relationCode,PID) values('" + DLLCoid + "',3,1,'0201',0,'" + DLLCoid + "');select @@identity";
id = Convert.ToInt32(SqlHelper.ExecuteScalar(CommandType.Text, sql));
}
string[] args =
{
FormText,
OperatorId,
OperatorName,
Privilege,
DLLCoid,
ModuleId,
id.ToString()
};
IForm form = PubUtil.LoadDllForm2("Lskj.Attachment.dll", args);
form.SubForm.ShowDialog();
}
#endregion
#region Execl 操作
/// <summary>
/// 导入操作
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnImprt_Click(object sender, EventArgs e)
{
string columnPrefix = PubClass.GetColumnPrefix(dtSystemDlltab["SQLDT1"].ToString());
frmImport frm = new frmImport(gcMain, dtSystemDlltab["SQLDT1"].ToString(),"","",OperatorId,OperatorName, columnPrefix);
frm.ShowDialog();
}
/// <summary>
/// 导出操作
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnExport_Click(object sender, EventArgs e)
{
PubClass.SaveXls(gcMain.gridControl);
}
#endregion
#region 行颜色
private void gvList_RowCellStyle(object sender, RowStyleEventArgs e)
{
if (e.RowHandle >= 0)
{
DataRow row = gcMain.gridView.GetDataRow(e.RowHandle);
string cond = string.Empty;
string color = string.Empty;
string forecolor = string.Empty;
foreach (DataRow dr in dtSysColorList.Rows)
{
List<string> condition = PubClass.GetParamValue(dr["condition"].ToString());
cond = dr["condition"].ToString();
foreach (string item in condition)
{
string filedName = item.Replace("{", "").Replace("}", "");
cond = cond.Replace(item, row[filedName].ToString());
}
cond = PubClass.SqlToCode(cond);
color = dr["backcolor"] + "";
forecolor = dr["forcecolor"].ToString() + "";
string obj = Evaluator.Eval(cond) + "";
if (obj.IndexOf("true", StringComparison.OrdinalIgnoreCase) != -1)
{
if (!string.IsNullOrEmpty(color))
{
System.Drawing.Color color1 = System.Drawing.ColorTranslator.FromHtml(color);
e.Appearance.BackColor = color1;
}
if (!string.IsNullOrEmpty(forecolor))
{
System.Drawing.Color foreColor = System.Drawing.ColorTranslator.FromHtml(forecolor);
e.Appearance.ForeColor = foreColor;
}
FontStyle fst = new FontStyle();
if (dr["ifBold"].ToString() == "1")
{
fst = fst | FontStyle.Bold;
}
if (dr["ifItalic"].ToString() == "1")
{
fst = fst | FontStyle.Italic;
}
if (dr["ifStrickOut"].ToString() == "1")
{
fst = fst | FontStyle.Strikeout;
}
if (dr["ifUnderLine"].ToString() == "1")
{
fst = fst | FontStyle.Underline;
}
e.Appearance.Font = new Font(e.Appearance.Font, fst);
}
}
}
}
#endregion
private void GridViewpub_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control & e.KeyCode == Keys.C)
{
Clipboard.SetDataObject((sender as GridView).GetFocusedRowCellValue((sender as GridView).FocusedColumn));
e.Handled = true;
}
}
#region 处理Grid计算
private void gridBillInfo_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
{
if (inSummary == true)
return;
inSummary = true;
try
{
DataRow gvRow = gcMain.gridView.GetDataRow(e.RowHandle);
foreach (DataRow row in dtSum.Rows)
{
string calcExpr = row["calcExpr"].ToString();
if (e.Column.FieldName != row["fieldName"].ToString())
{
List<string> listParam = PubClass.GetParamValue(calcExpr);
foreach (string str in listParam)
{
string filed = str.Replace("{", "").Replace("}", "");
string filedValue = gvRow[filed].ToString();
if (string.IsNullOrEmpty(filedValue))
filedValue = "0";
calcExpr = calcExpr.Replace(str, filedValue + "");
}
calcExpr = calcExpr.Replace("=", "==").Replace("<>", "!=").Replace("and", "&&").Replace("or", "|");
string result = Evaluator.Eval(calcExpr).ToString();
gcMain.gridView.SetRowCellValue(e.RowHandle, gcMain.gridView.Columns[row["fieldName"].ToString()], Math.Round(double.Parse(result), 2, MidpointRounding.AwayFromZero));
}
}
}
catch
{
}
inSummary = false;
}
#endregion
}
}