Files
lserp_cs_5.0/插件库/Lskj.Add2/Lskj.Add2/Panel_TabPage.cs
T
2026-07-10 15:25:05 +08:00

528 lines
24 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Lskj.Common;
using CommonLib;
using CommonLib.utils;
using DevExpress.XtraGrid.Columns;
using ExcelPlus;
using System.Data.SqlClient;
using Lskj.MyControl;
using DevExpress.XtraGrid.Views.Grid;
namespace Lskj.PubAdd2
{
public partial class Panel_TabPage : UserControl {
//模块ID
public string DLLCoid { get; set; }
//管理员Id
public string OperatorId { get; set; }
//管理员名称
public string OperatorName { get; set; }
//权限
public string Privilege { get; set; }
//窗体标题
public string FormText { get; set; }
//对象Id
public string objectId { get; set; }
//对象值
public string objectValue { get; set; }
public String dllSql { get; set; }
public String autoRefresh { get; set; }
public DataTable dtSum { get; set; }
private string addCond; // 添加条件
private string deleteCond; //删除条件
private string modifyCond; // 修改条件
private string printCond = string.Empty;
private string exportCond = string.Empty;
private bool gridEdited = false;
bool addEnable = false;
bool deleteEnable = false;
bool importEnable = false;
bool exportEnable = false;
bool searchEnable = false;
//主表数据
private DataTable dtSystemDlltab;
//主键数据
private DataTable idFiledKey;
private bool needModified;
/// <summary>
/// 是否报表
/// </summary>
public bool HasReport { get; set; }
/// <summary>
/// 条件颜色
/// </summary>
private DataTable dtSysColorList;
/// <summary>
/// DbDataAdapter
/// </summary>
private SqlDataAdapter da { get; set; }
/// <summary>
/// 操作Dataset
/// </summary>
private DataSet ds { get; set; }
public Panel_TabPage() {
InitializeComponent();
}
/// <summary>
/// 初始化数据
/// </summary>
/// <param name="e"></param>
protected override void OnLoad(EventArgs e) {
ds = new DataSet();
dtSystemDlltab = CommonLib.SqlHelper.ExecuteDataSet("select * from P_systemDlltab where DLLCoid='" + DLLCoid + "'").Tables[0];
if (dtSystemDlltab != null && dtSystemDlltab.Rows.Count > 0) {
addCond = dtSystemDlltab.Rows[0]["addCond"] + "";
deleteCond = dtSystemDlltab.Rows[0]["deleteCond"] + "";
modifyCond = dtSystemDlltab.Rows[0]["modifyCond"].ToString();
gridEdited = (string.IsNullOrEmpty(dtSystemDlltab.Rows[0]["selfEdit"] + "") || dtSystemDlltab.Rows[0]["selfEdit"] + "" == "0" || dtSystemDlltab.Rows[0]["selfEdit"] + "" == "False") ? false : true;
gridList.gridView.OptionsBehavior.Editable = gridEdited;
if (dtSystemDlltab.Columns.Contains("exportCond"))
exportCond = dtSystemDlltab.Rows[0]["exportCond"].ToString();
if (dtSystemDlltab.Columns.Contains("printCond"))
printCond = dtSystemDlltab.Rows[0]["printCond"].ToString();
needModified = dtSystemDlltab.Rows[0]["modifyEnable"].ToString() == "1";
addEnable = dtSystemDlltab.Rows[0]["addEnable"] + "" == "1";
deleteEnable = dtSystemDlltab.Rows[0]["deleteEnable"] + "" == "1";
importEnable = dtSystemDlltab.Rows[0]["importEnable"] + "" == "1";
exportEnable = dtSystemDlltab.Rows[0]["exportEnable"] + "" == "1";
searchEnable = dtSystemDlltab.Rows[0]["searchEnable"] + "" == "1";
btnAdd.Enabled = addEnable;
btnDelete.Enabled = deleteEnable;
btnImport.Enabled = importEnable;
btnExport.Enabled = exportEnable;
btnCondSearch.Enabled = searchEnable;
btnUpdate.Enabled = needModified;
btnSave.Enabled = needModified;
btnPrint.Enabled = false;
btnExport.Enabled = false;
}
// 当前标签为报表
if (HasReport)
{
btnAdd.Visible = btnDelete.Visible = btnImport.Visible = btnUpdate.Visible = btnSave.Visible = false;
}
idFiledKey = SqlHelper.ExecuteDataSet("select top 1 * from P_systemwordbooktab where tab='" + DLLCoid + "' order by orderid").Tables[0];
GridMenu gm = new GridMenu(FormText, OperatorId, OperatorName, Privilege, DLLCoid, "", gridList.gridControl);
gm.DirId = dtSystemDlltab.Rows[0]["dirid"] + "";
gm.filedKey = idFiledKey.Rows[0]["fieldname"].ToString();
gm.BindGridMenuWQ(DLLCoid);
gridList.gridControl.DoubleClick += new EventHandler(gridControl_DoubleClick);
gridList.gridView.SelectionChanged += new DevExpress.Data.SelectionChangedEventHandler(gridView_SelectionChanged);
dtSysColorList = SqlHelper.ExecuteDataSet("select * from P_systemwordbookcolor where tab='" + DLLCoid + "' and isnull(useflag,0)=0 order by orderid").Tables[0];
gridList.gridView.RowStyle += new RowStyleEventHandler(gridView_RowStyle);
DataTable cbSearchFiled = SqlHelper.ExecuteDataSet("select * from P_systemwordbooktab where tab='" + DLLCoid + "' and ifSearch =0 and isnull(username1,'')<>'' ").Tables[0];
//加载筛选框
cbField.DataSource = cbSearchFiled;
cbField.DisplayMember = "username1";
cbField.ValueMember = "fieldname";
if (autoRefresh == "1") {
InitData(gridList.Sql);
}
}
private void gridView_SelectionChanged(object sender, DevExpress.Data.SelectionChangedEventArgs e)
{
setButtonStatus();
}
private void setButtonStatus()
{
bool isAdd = true;
bool isDelete = true;
bool isUpdate = true;
bool isExport = true;
bool isPrint = true;
// 添加权限
if (!string.IsNullOrEmpty(addCond))
{
string tempCond = PubClass.SqlToCode(PubClass.ReqSqlParam(addCond, OperatorId, OperatorName));
isAdd = Convert.ToBoolean(Evaluator.Eval(tempCond)) && addEnable;
}
if (!string.IsNullOrEmpty(exportCond))
{
string tempCond = PubClass.SqlToCode(PubClass.ReqSqlParam(exportCond, OperatorId, OperatorName));
isExport = Convert.ToBoolean(Evaluator.Eval(tempCond)) && exportEnable;
}
if (!string.IsNullOrEmpty(printCond))
{
string tempCond = PubClass.SqlToCode(PubClass.ReqSqlParam(printCond, OperatorId, OperatorName));
isPrint = Convert.ToBoolean(Evaluator.Eval(tempCond));
}
int[] rows = gridList.gridView.GetSelectedRows();
if (rows != null && rows.Length > 0)
{
DataRow row = gridList.gridView.GetDataRow(rows[0]);
// 添加权限
//if (!string.IsNullOrEmpty(addCond))
//{
// string tempCond = PubClass.ReqSqlWhere(row, PubClass.ReqSqlParam(addCond, OperatorId, OperatorName));
// isAdd = Convert.ToBoolean(Evaluator.Eval(tempCond)) && addEnable;
//}
// 删除权限
if (!string.IsNullOrEmpty(deleteCond))
{
string tempCond = PubClass.ReqSqlWhere(row, PubClass.ReqSqlParam(deleteCond, OperatorId, OperatorName));
isDelete = Convert.ToBoolean(Evaluator.Eval(tempCond)) && deleteEnable;
}
// 修改、保存权限
if (!string.IsNullOrEmpty(modifyCond))
{
string tempCond = PubClass.ReqSqlWhere(row, PubClass.ReqSqlParam(modifyCond, OperatorId, OperatorName));
isUpdate = Convert.ToBoolean(Evaluator.Eval(tempCond)) && needModified;
gridList.gridView.OptionsBehavior.Editable = isUpdate;
}
//btnAdd.Enabled = isAdd;
//btnImport.Enabled = isAdd;
btnDelete.Enabled = isDelete;
btnUpdate.Enabled = btnSave.Enabled = isUpdate;
btnExport.Enabled = isExport;
btnPrint.Enabled = isPrint;
}
btnAdd.Enabled = isAdd;
btnExport.Enabled = isExport;
btnPrint.Enabled = isPrint;
btnImport.Enabled = isAdd;
}
#region 行颜色
private void gridView_RowStyle(object sender, RowStyleEventArgs e) {
if (e.RowHandle >= 0) {
DataRow row = gridList.gridView.GetDataRow(e.RowHandle);
string cond = string.Empty;
string color = string.Empty;
string forecolor = string.Empty;
foreach (DataRow dr in dtSysColorList.Rows) {
//string[] strSplit = dr["condition"].ToString().Split('=');
//if (strSplit.Length >= 2)
//{
// string filed = strSplit[0].Replace("{", "").Replace("}", "");
// string value = strSplit[1];
// if (value == row[filed] + "")
// {
// System.Drawing.Color color = System.Drawing.ColorTranslator.FromHtml(dr["backcolor"].ToString());
// System.Drawing.Color foreColor = System.Drawing.ColorTranslator.FromHtml(dr["forcecolor"].ToString());
// e.Appearance.BackColor = color;
// e.Appearance.ForeColor = foreColor;
// }
//}
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 gridControl_DoubleClick(object sender, EventArgs e) {
if (!string.IsNullOrEmpty(dtSystemDlltab.Rows[0]["AddDllName"] + ""))
UpdateModel();
}
private void btnPrint_Click(object sender, EventArgs e) {
PubClass.Preview(gridList.gridControl);
}
private void btnDelete_Click(object sender, EventArgs e) {
string noDeleteIds = string.Empty;
int[] rowid = gridList.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 = gridList.gridView.GetDataRow(rid);
//判断删除条件是否符合
Boolean canDelete = string.IsNullOrEmpty(deleteCond);
string tempCond = deleteCond;
if (!canDelete) {
tempCond = PubClass.ReqSqlParam(tempCond, OperatorId, OperatorName);
tempCond = PubClass.ReqSqlWhere(dr, tempCond);
canDelete = Convert.ToBoolean(Evaluator.Eval(tempCond));
}
if (canDelete)
{
//删除检查
SqlParameter pMsg = new SqlParameter("@msg", SqlDbType.VarChar, 2000);
pMsg.Direction = ParameterDirection.Output;
SqlParameter returnValue = new SqlParameter("@return", SqlDbType.Int, 4);
returnValue.Direction = ParameterDirection.ReturnValue;
SqlParameter[] param =
{
new SqlParameter("@modid",SqlDbType.VarChar,20),
new SqlParameter("@keyvalue",SqlDbType.VarChar,40),
pMsg,
returnValue
};
param[0].Value = DLLCoid;
param[1].Value = dr[idFiledKey.Rows[0]["fieldname"] + ""];
DataSet ds = SqlHelper.ExecuteDataSet(CommandType.StoredProcedure, "p_VerifyCanDelete", "baseSave", param);
string msg = pMsg.Value.ToString();
int rVaule = Convert.ToInt32(returnValue.Value.ToString());
if (rVaule == 1)
{
ids += "'" + dr[idFiledKey.Rows[0]["fieldname"] + ""] + "',";
}
else
{
noDeleteIds += dr[idFiledKey.Rows[0]["fieldname"] + ""] + " >> " + msg + "\n";
}
}
else
{
noDeleteIds += dr[idFiledKey.Rows[0]["fieldname"] + ""] + " >>不符删除合条件\n";
}
}
if (ids != string.Empty) {
string sql = "delete from " + dtSystemDlltab.Rows[0]["SQLDT1"] + " where " + idFiledKey.Rows[0]["fieldname"] + " in(" + ids.Trim(',') + ")";
SqlHelper.ExecuteNonQuery(sql);
InitData(gridList.Sql);
string strHint = "记录删除成功";
if (!string.IsNullOrEmpty(noDeleteIds))
strHint = strHint + ",但是发现如下记录不符合删除条件\n" + noDeleteIds;
MessageBox.Show(strHint, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else {
string strHint = "没有符合删除条件的记录";
if (!string.IsNullOrEmpty(noDeleteIds))
strHint = strHint + ",发现如下记录不符合删除条件\n" + noDeleteIds;
MessageBox.Show(strHint, "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
}
}
private void btnAdd_Click(object sender, EventArgs e) {
if (!string.IsNullOrEmpty(dtSystemDlltab.Rows[0]["AddDllName"] + "")) {
string[] args = {
FormText,
OperatorId,
OperatorName,
Privilege,
DLLCoid,
"",
"",
"",
objectId,
objectValue,
dllSql
};
IForm form = PubUtil.LoadDllForm(dtSystemDlltab.Rows[0]["AddDllName"] + "", args);
DialogResult result = form.SubForm.ShowDialog();
InitData(gridList.Sql);
}
else {
AddRow(gridList.gridView);
}
}
/// <summary>
/// 添加行
/// </summary>
/// <param name="view"></param>
protected void AddRow(DevExpress.XtraGrid.Views.Grid.GridView view) {
int prevDataRowIndex = view.GetFocusedDataSourceRowIndex();
view.AddNewRow();
DataTable dt = null;
if (!string.IsNullOrEmpty(dllSql) && dllSql.Contains("select")) {
dt = SqlHelper.ExecuteDataSet(dllSql).Tables[0];
}
//默认值
foreach (GridColumn item in view.Columns) {
if (item.Tag != null) {
MyTagModel cmt = item.Tag as MyTagModel;
if (cmt != null) {
string defaultValue = PubClass.GetDefaultValue(cmt.DefaultValue.ToString(), OperatorId, OperatorName);
if (item.FieldName.ToUpper().Equals(objectId.ToUpper())) {
view.SetRowCellValue(view.FocusedRowHandle, item, objectValue);
}
else if (dt != null && dt.Rows.Count > 0) {
foreach (DataColumn dc in dt.Columns) {
if (dc.ColumnName.ToUpper() == item.FieldName.ToUpper()) {
view.SetRowCellValue(view.FocusedRowHandle, item, dt.Rows[0][dc.ColumnName]);
}
}
}
else {
if (!string.IsNullOrEmpty(defaultValue))
{
view.SetRowCellValue(view.FocusedRowHandle, item, defaultValue);
}
}
}
}
}
}
/// <summary>
/// 导出Excel
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnExport_Click(object sender, EventArgs e) {
PubClass.SaveXls(gridList.gridControl);
}
/// <summary>
/// 导入Excel
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnImport_Click(object sender, EventArgs e) {
frmImport frm = new frmImport(gridList, dtSystemDlltab.Rows[0]["SQLDT1"].ToString(),objectId, objectValue, OperatorId, OperatorName,"");
frm.ShowDialog();
}
public bool UpdateModel() {
int[] rows = gridList.gridView.GetSelectedRows();
if (rows.Length > 0) {
DataRow dr = gridList.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[idFiledKey.Rows[0]["fieldname"] + ""].ToString();
string[] args = {
FormText,
OperatorId,
OperatorName,
Privilege,
DLLCoid,
"",
Convert.ToInt32( !canModify).ToString(),
productId,
"",
"",
"",
dllSql
};
IForm form = PubUtil.LoadDllForm(dtSystemDlltab.Rows[0]["AddDllName"] + "", args);
form.SubForm.ShowDialog();
}
InitData(gridList.Sql);
return true;
}
private void btnUpdate_Click(object sender, EventArgs e) {
UpdateModel();
}
private void btnSave_Click(object sender, EventArgs e) {
try {
da.Update(ds);
}
catch (Exception ex) {
if (ex.Message.IndexOf("ix", StringComparison.OrdinalIgnoreCase) != -1) {
MessageBox.Show("系统检测到录入信息重复,请检查", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
else {
MessageBox.Show(ex.Message);
return;
}
}
MessageBox.Show("修改成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
/// <summary>
/// 初始化数据
/// </summary>
/// <param name="sql"></param>
public void InitData(string sql) {
int oldRowHandle = (gridList.gridView).FocusedRowHandle;
string field = cbField.SelectedValue.ToString();
string strWhere = " (dbo.P_getpy(" + field + ") like '%" + txtKey.Text + "%' or " + field + " like '%" + txtKey.Text + "%')";
if (sql.IndexOf("where", StringComparison.OrdinalIgnoreCase) != -1) {
sql = sql + " and " + strWhere;
}
else {
sql = sql + " where " + strWhere;
}
//这个绑定数据源
sql = PubClass.ReqSqlParam(sql, OperatorId, OperatorName);
da = SqlHelper.ExecuteAdapter(CommandType.Text, sql);
if (ds != null && ds.Tables.Count > 0)
ds.Clear();
da.Fill(ds);
SqlCommandBuilder cb = new SqlCommandBuilder(da);
gridList.gridControl.DataSource = ds.Tables[0];
(gridList.gridView).ClearSelection();
(gridList.gridView).FocusedRowHandle = oldRowHandle;
(gridList.gridView).SelectRow(oldRowHandle);
setButtonStatus();
}
private void btnCondSearch_Click(object sender, EventArgs e) {
InitData(gridList.Sql);
}
}
}