diff --git a/插件库/Lskj.Control/FrmWebBrowser.cs b/插件库/Lskj.Control/FrmWebBrowser.cs index 01697fa..9252f95 100644 --- a/插件库/Lskj.Control/FrmWebBrowser.cs +++ b/插件库/Lskj.Control/FrmWebBrowser.cs @@ -145,4 +145,7 @@ namespace Lskj.Control // .Replace("//", "/"); //qpLS.Add(string.Format("{0}={1}", eqParams[0], val)); - \ No newline at end of file + qpLS.Add(string.Format("{0}={1}", eqParams[0], HttpUtility.UrlEncode(HttpUtility.UrlDecode(string.Join("=", eqParams.Skip(1)))).Replace("%5c", "/").Replace("%2f", "/").Replace("//", "/").Replace("+", "%20"))); + } + } + \ No newline at end of file diff --git a/插件库/Lskj.Control/FrmWebBrowser2.cs b/插件库/Lskj.Control/FrmWebBrowser2.cs index 058ccdf..f700f46 100644 --- a/插件库/Lskj.Control/FrmWebBrowser2.cs +++ b/插件库/Lskj.Control/FrmWebBrowser2.cs @@ -148,4 +148,11 @@ namespace Lskj.Control } } else - \ No newline at end of file + { + } + } + if (pms.Count > 0) + { + DateTime dateTime = DateTime.Now.AddDays(1); + DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); + \ No newline at end of file diff --git a/插件库/Lskj.Control/GridControlEx.cs b/插件库/Lskj.Control/GridControlEx.cs index 947b036..91b4944 100644 --- a/插件库/Lskj.Control/GridControlEx.cs +++ b/插件库/Lskj.Control/GridControlEx.cs @@ -476,7 +476,7 @@ namespace Lskj.Control /// /// The sender. public event ModuleAddLine OnNewLine; - public delegate void ModuleAddLine(string name, Listlist); + public delegate void ModuleAddLine(string name, List list); public GridControlEx() { @@ -858,7 +858,7 @@ namespace Lskj.Control { string currentGroupName = GetMergeGroupValue(model, gridRow); bool isMergrGroup = !string.IsNullOrEmpty(currentGroupName) && e.RowHandle != 0 ? currentGroupName.Equals(BeforeGroupName) : false; - + if (model.CanMerge && BeforeClass == Convert.ToDecimal(e.FieldValue) && isMergrGroup) { BeforeClass = Convert.ToDecimal(e.FieldValue); @@ -1201,7 +1201,7 @@ namespace Lskj.Control } } - + /// /// 说明:设置列格式化 @@ -1380,7 +1380,7 @@ namespace Lskj.Control { gridColumn.ToolTip = model.ColumnAnnotation; } - + } //创建右键菜单列 @@ -1725,7 +1725,7 @@ namespace Lskj.Control } //gridView.OptionsView.AllowCellMerge = gridView.OptionsView.AllowCellMerge; - if (!string.IsNullOrWhiteSpace(model.TitleColor)) + if (!string.IsNullOrWhiteSpace(model.TitleColor)) { gridColumn.AppearanceHeader.Options.UseForeColor = true; gridColumn.AppearanceHeader.ForeColor = ColorTranslator.FromHtml(model.TitleColor); @@ -4355,7 +4355,14 @@ namespace Lskj.Control gridControl.RepositoryItems.Add(searchEdit); gridColumn.ColumnEdit = searchEdit; searchEdit.View.Tag = searchEdit; - if (model.SearchBoxAddition) searchEdit.ProcessNewValue += SearchEdit_ProcessNewValue; + + if (model.SearchBoxAddition && (ControlType.LabAutoCompleteText == model.FieldType || ControlType.LabAutoCompleteTextParam == model.FieldType || + ControlType.LabAutoGridText == model.FieldType || ControlType.LabAutoGridTextParam == model.FieldType)) + { + searchEdit.ProcessNewValue += SearchEdit_ProcessNewValue; + searchEdit.CustomDisplayText += SearchEdit_CustomDisplayText; + + } searchEdit.EditValueChanging += gridLookUpEdit1_EditValueChanging; //if ((ControlType.LabAutoCompleteText == model.FieldType || ControlType.LabAutoGridText == model.FieldType || ControlType.LabAutoGridTextParam == model.FieldType)) @@ -4372,7 +4379,8 @@ namespace Lskj.Control } /// - /// 添加一个值到数据源中 + /// 搜索框允许新增时,将用户输入的文本临时加入下拉数据源。 + /// 这里只处理“显示文本、保存文本”的控件类型,避免给保存ID的控件自动生成不存在的ID。 /// /// /// @@ -4380,82 +4388,63 @@ namespace Lskj.Control { try { + GridLookUpEdit edit = sender as GridLookUpEdit; + if (edit == null) return; GridColumnModel model = edit.Properties.Tag as GridColumnModel; - //RepositoryItemGridLookUpEdit searchEdit = edit.Properties; - RepositoryItemGridLookUpEdit searchEdit = GridView.Columns[model.FieldName].ColumnEdit as RepositoryItemGridLookUpEdit; - DataTable dt = (searchEdit.DataSource as DataTable); + if (model == null || !model.SearchBoxAddition) return; + if (!(ControlType.LabAutoCompleteText == model.FieldType || ControlType.LabAutoCompleteTextParam == model.FieldType || + ControlType.LabAutoGridText == model.FieldType || ControlType.LabAutoGridTextParam == model.FieldType)) return; + string displayValue = e.DisplayValue + ""; + if (string.IsNullOrWhiteSpace(displayValue)) return; BeginInvoke(new MethodInvoker(delegate () { - FilterLookup(sender, e.DisplayValue + ""); + FilterLookup(sender, displayValue); })); - if (true) + RepositoryItemGridLookUpEdit searchEdit = GridView.Columns[model.FieldName].ColumnEdit as RepositoryItemGridLookUpEdit; + if (searchEdit == null) return; + + DataTable dt = searchEdit.DataSource as DataTable; + if (dt == null) return; + + string valueName = searchEdit.ValueMember; + string textName = !string.IsNullOrWhiteSpace(searchEdit.DisplayMember) ? searchEdit.DisplayMember : model.TextMember; + if (string.IsNullOrWhiteSpace(valueName) || !dt.Columns.Contains(valueName)) return; + + Type dataType = dt.Columns[valueName].DataType; + if (dataType != typeof(string)) return; + + bool exists = dt.Rows.Cast().Any(x => + (x[valueName] + "").Equals(displayValue) || + (!string.IsNullOrWhiteSpace(textName) && dt.Columns.Contains(textName) && (x[textName] + "").Equals(displayValue))); + if (exists) return; + + DataRow newRow = dt.NewRow(); + newRow[valueName] = displayValue; + if (!string.IsNullOrWhiteSpace(textName) && dt.Columns.Contains(textName)) { - if (string.IsNullOrWhiteSpace(e.DisplayValue + "")) return; - string ValueName = searchEdit.View.Columns[0].FieldName; - string TextName = searchEdit.View.Columns[1].FieldName; - Type dataType = dt.Columns[ValueName].DataType; - DataRow newRow = dt.NewRow(); - if (dataType.Name == "Int32") + newRow[textName] = displayValue; + } + + if (model.FieldType == ControlType.LabAutoGridTextParam || model.FieldType == ControlType.LabAutoCompleteTextParam) + { + if (this.ManuallyAddData.ContainsKey(model.FieldName)) { - int maxdm = Convert.ToInt32(searchEdit.View.Columns[ValueName].Tag); - edit.Properties.View.ActiveFilterString = string.Format(ValueName + "< {0}", maxdm); - - int maxdmIndex = dt.AsEnumerable().Select(t => t.Field(ValueName)).Max(); - newRow[ValueName] = maxdmIndex + 1; - newRow[TextName] = e.DisplayValue + ""; - if (dt.Rows.Cast().FirstOrDefault(x => (x[ValueName] + "").Equals(e.DisplayValue + "")) == null) - { - if (model.FieldType == ControlType.LabAutoGridValueParam || model.FieldType == ControlType.LabAutoGridTextParam || model.FieldType == ControlType.LabAutoCompleteTextParam || model.FieldType == ControlType.LabAutoCompleteValueParam) - { - if (this.ManuallyAddData.ContainsKey(model.FieldName)) - { - List DataRows = this.ManuallyAddData[model.FieldName]; - DataRows.Add(newRow); - } - else - { - List DataRows = new List(); - DataRows.Add(newRow); - this.ManuallyAddData.Add(model.FieldName, DataRows); - } - - } - dt.Rows.Add(newRow.ItemArray); - e.Handled = true; - } + this.ManuallyAddData[model.FieldName].Add(newRow); } - else if (dataType.Name == "String") + else { - newRow[ValueName] = e.DisplayValue + ""; - newRow[TextName] = e.DisplayValue + ""; - if (dt.Rows.Cast().FirstOrDefault(x => (x[TextName] + "").Equals(e.DisplayValue + "")) == null) - { - if (model.FieldType == ControlType.LabAutoGridValueParam || model.FieldType == ControlType.LabAutoGridTextParam || model.FieldType == ControlType.LabAutoCompleteTextParam || model.FieldType == ControlType.LabAutoCompleteValueParam) - { - if (this.ManuallyAddData.ContainsKey(model.FieldName)) - { - List DataRows = this.ManuallyAddData[model.FieldName]; - DataRows.Add(newRow); - } - else - { - List DataRows = new List(); - DataRows.Add(newRow); - this.ManuallyAddData.Add(model.FieldName, DataRows); - } - - } - dt.Rows.Add(newRow.ItemArray); - e.Handled = true; - } + this.ManuallyAddData.Add(model.FieldName, new List() { newRow }); } } + dt.Rows.Add(newRow.ItemArray); + e.Handled = true; + } catch (Exception ex) { @@ -4467,6 +4456,50 @@ namespace Lskj.Control } } + /// + /// 搜索框新增值未持久化到下拉SQL数据源时,直接用单元格保存的文本作为显示值。 + /// 这样重新打开模块后,即使下拉数据源查不到该文本,界面也不会显示为空白。 + /// + private void SearchEdit_CustomDisplayText(object sender, CustomDisplayTextEventArgs e) + { + if (e.Value == null) return; + + RepositoryItemGridLookUpEdit edit = sender as RepositoryItemGridLookUpEdit; + if (edit == null) return; + + GridColumnModel model = edit.Tag as GridColumnModel; + if (model == null || !model.SearchBoxAddition) return; + + if (!(model.FieldType == ControlType.LabAutoCompleteText || + model.FieldType == ControlType.LabAutoCompleteTextParam || + model.FieldType == ControlType.LabAutoGridText || + model.FieldType == ControlType.LabAutoGridTextParam)) return; + + string value = e.Value + ""; + if (string.IsNullOrWhiteSpace(value)) return; + + DataTable dt = edit.DataSource as DataTable; + string valueName = edit.ValueMember; + string textName = !string.IsNullOrWhiteSpace(edit.DisplayMember) ? edit.DisplayMember : model.TextMember; + if (dt == null || + (string.IsNullOrWhiteSpace(valueName) || !dt.Columns.Contains(valueName)) && + (string.IsNullOrWhiteSpace(textName) || !dt.Columns.Contains(textName))) + { + e.DisplayText = value; + return; + } + + bool exists = dt.Rows.Cast().Any(x => + (!string.IsNullOrWhiteSpace(valueName) && dt.Columns.Contains(valueName) && (x[valueName] + "") == value) || + (!string.IsNullOrWhiteSpace(textName) && dt.Columns.Contains(textName) && (x[textName] + "") == value)); + + if (!exists) + { + e.DisplayText = value; + } + } + + /// /// 数据源中点击将数据源更新 @@ -5484,7 +5517,7 @@ namespace Lskj.Control public virtual void SetGridRowColors(DataTable table) { this.GridRowColorsTable = table; - + if (table != null && table.Rows.Count > 0) { DataRow rowItem = table.Select("1=1").FirstOrDefault(x => (x["condition"] + "").Contains("COLUMN_")); @@ -6500,7 +6533,7 @@ namespace Lskj.Control /// protected void OnGridViewRowCellStyle(object sender, RowCellStyleEventArgs e) { - if (e.RowHandle >= 0 && this.GridRowColorsTable != null && this.GridRowColorsTable.Rows.Count > 0 && (!string.IsNullOrEmpty(e.CellValue + "")|| SystemInfo.Instance.isBlankCellColor)) + if (e.RowHandle >= 0 && this.GridRowColorsTable != null && this.GridRowColorsTable.Rows.Count > 0 && (!string.IsNullOrEmpty(e.CellValue + "") || SystemInfo.Instance.isBlankCellColor)) { // 渲染界面数据量过多界面刷新会很慢 //DataTable table = this.gridControl.DataSourceTable(); @@ -6519,7 +6552,7 @@ namespace Lskj.Control // 判断单元格是否被选中 bool isCellSelected = gridView.IsCellSelected(e.RowHandle, e.Column); - if (!isCellSelected) + if (!isCellSelected) { if (!string.IsNullOrWhiteSpace(model.BackColor)) { @@ -6674,7 +6707,7 @@ namespace Lskj.Control { e.Appearance.ForeColor = ColorTranslator.FromHtml(SystemInfo.Instance.SelectRowForeColor); } - + //// 如果当前单元格被选中 → 画虚线 //if (gridView.IsCellSelected(e.RowHandle, e.Column)) //{ @@ -6756,7 +6789,7 @@ namespace Lskj.Control string PromptText = string.Empty; // 判断单元格值是否为 null 或空 - if ((e.CellValue == null || string.IsNullOrEmpty(e.CellValue.ToString()))&&PromptMessage.TryGetValue(e.Column.FieldName, out PromptText)) + if ((e.CellValue == null || string.IsNullOrEmpty(e.CellValue.ToString())) && PromptMessage.TryGetValue(e.Column.FieldName, out PromptText)) { // 绘制默认单元格背景 e.DefaultDraw(); @@ -6836,7 +6869,7 @@ namespace Lskj.Control string[] dataReleColNames = selectColumnModel.AutoPadDataReleColName.TrimEnd(',').Split(','); if (dataReleColNames.Contains(e.Column.FieldName)) { - DataRow[] selectRows = dataTable.Select().Where(n => (n[selectColumnModel.FieldName]+"").Equals(value)).ToArray(); + DataRow[] selectRows = dataTable.Select().Where(n => (n[selectColumnModel.FieldName] + "").Equals(value)).ToArray(); foreach (DataRow selectRow in selectRows) { int dataSourceIndex = dataTable.Rows.IndexOf(selectRow); @@ -6991,7 +7024,7 @@ namespace Lskj.Control this.SelectedRows = this.gridView.GetSelectedRows(); if (gridView.OptionsSelection.MultiSelect == true && gridView.OptionsSelection.MultiSelectMode == GridMultiSelectMode.CheckBoxRowSelect && gridView.OptionsSelection.EnableAppearanceFocusedCell == false) this.gridView.UpdateSummary(); - if (SystemInfo.Instance.DisplayCheckboxSelection &&!string.IsNullOrWhiteSpace(this.MultiplePrimary) && gridView.OptionsSelection.MultiSelect == true && gridView.OptionsSelection.MultiSelectMode == GridMultiSelectMode.CheckBoxRowSelect && gridView.OptionsSelection.EnableAppearanceFocusedCell == false) + if (SystemInfo.Instance.DisplayCheckboxSelection && !string.IsNullOrWhiteSpace(this.MultiplePrimary) && gridView.OptionsSelection.MultiSelect == true && gridView.OptionsSelection.MultiSelectMode == GridMultiSelectMode.CheckBoxRowSelect && gridView.OptionsSelection.EnableAppearanceFocusedCell == false) { SelectedDataSource.Clear(); DataRow[] dataRows = this.GetViewFocusedDataRows(); @@ -7210,7 +7243,7 @@ namespace Lskj.Control DataTable table = MainImpl.GetDataTableResult(sqlValue); - if (model.SearchBoxAddition && (model.FieldType == ControlType.LabAutoGridValueParam || model.FieldType == ControlType.LabAutoGridTextParam || model.FieldType == ControlType.LabAutoCompleteTextParam || model.FieldType == ControlType.LabAutoCompleteValueParam)) + if (model.SearchBoxAddition && (model.FieldType == ControlType.LabAutoGridTextParam || model.FieldType == ControlType.LabAutoCompleteTextParam)) { if (this.ManuallyAddData.ContainsKey(model.FieldName)) { @@ -7640,11 +7673,11 @@ namespace Lskj.Control btnEdit.EditValue = modelLookUp.EditValue; this.GridView.SetFocusedRowCellValue(model.FieldName, modelLookUp.EditValue); - if (OnNewLine != null && modelLookUp.EditValueList.Count>0) + if (OnNewLine != null && modelLookUp.EditValueList.Count > 0) { OnNewLine(model.FieldName, modelLookUp.EditValueList); } - + } } catch (Exception ex) @@ -9316,7 +9349,7 @@ namespace Lskj.Control foreach (GridColumn item in gc) { GridColumnModel model = item.Tag as GridColumnModel; - + //修改 if (Modify && modifyFields.Split(',').Contains(item.FieldName.ToLower())) { @@ -9354,7 +9387,7 @@ namespace Lskj.Control if (model.FieldType == ControlType.LabMemoEdit) item.OptionsColumn.AllowEdit = true; } - + //必填 if (Required && requiredFields.Split(',').Contains(item.FieldName.ToLower())) { @@ -9427,7 +9460,7 @@ namespace Lskj.Control if (SystemInfo.Instance.DisplayCheckboxSelection && !string.IsNullOrWhiteSpace(this.MultiplePrimary) && gridView.OptionsSelection.MultiSelect == true && gridView.OptionsSelection.MultiSelectMode == GridMultiSelectMode.CheckBoxRowSelect && gridView.OptionsSelection.EnableAppearanceFocusedCell == false) { DataRow dataRow = this.gridView.GetDataRow(e.ListSourceRow); - if (dataRow!=null&& dataRow.Table.Columns.Contains(this.MultiplePrimary) && SelectedDataSource.Contains(dataRow[this.MultiplePrimary]+"")) + if (dataRow != null && dataRow.Table.Columns.Contains(this.MultiplePrimary) && SelectedDataSource.Contains(dataRow[this.MultiplePrimary] + "")) { e.Handled = true; e.Visible = true; @@ -10111,6 +10144,7 @@ namespace Lskj.Control if (gridColumn != null && gridColumn.Tag != null && gridColumn.Tag is GridColumnModel) { GridColumnModel model = (GridColumnModel)gridColumn.Tag; + EnsureSearchAdditionValueInDataSource(gridColumn, model); if (model.FormatEditBox && (model.FieldType == ControlType.LabTextInt || model.FieldType == ControlType.LabCalcText || model.FieldType == ControlType.LabAccount) && gridColumn.RealColumnEdit != null && !gridColumn.RealColumnEdit.EditFormat.FormatString.Equals(model.DataFormat)) { gridColumn.RealColumnEdit.EditFormat.FormatType = DevExpress.Utils.FormatType.Numeric; @@ -10141,6 +10175,46 @@ namespace Lskj.Control } } + /// + /// SearchBoxAddition保存文本值时,编辑器显示前把当前单元格值补进下拉数据源。 + /// 避免已保存文本不在下拉SQL结果中时,点击单元格进入编辑态显示为空。 + /// + private void EnsureSearchAdditionValueInDataSource(GridColumn gridColumn, GridColumnModel model) + { + if (gridColumn == null || model == null || !model.SearchBoxAddition) return; + if (!(ControlType.LabAutoCompleteText == model.FieldType || ControlType.LabAutoCompleteTextParam == model.FieldType || + ControlType.LabAutoGridText == model.FieldType || ControlType.LabAutoGridTextParam == model.FieldType)) return; + + RepositoryItemGridLookUpEdit searchEdit = gridColumn.ColumnEdit as RepositoryItemGridLookUpEdit; + if (searchEdit == null) return; + + DataTable dt = searchEdit.DataSource as DataTable; + if (dt == null) return; + + string valueName = searchEdit.ValueMember; + string textName = !string.IsNullOrWhiteSpace(searchEdit.DisplayMember) ? searchEdit.DisplayMember : model.TextMember; + if (string.IsNullOrWhiteSpace(valueName) || !dt.Columns.Contains(valueName)) return; + + Type dataType = dt.Columns[valueName].DataType; + if (dataType != typeof(string)) return; + + string value = gridView.GetFocusedRowCellValue(gridColumn) + ""; + if (string.IsNullOrWhiteSpace(value)) return; + + bool exists = dt.Rows.Cast().Any(x => + (x[valueName] + "").Equals(value) || + (!string.IsNullOrWhiteSpace(textName) && dt.Columns.Contains(textName) && (x[textName] + "").Equals(value))); + if (exists) return; + + DataRow newRow = dt.NewRow(); + newRow[valueName] = value; + if (!string.IsNullOrWhiteSpace(textName) && dt.Columns.Contains(textName)) + { + newRow[textName] = value; + } + dt.Rows.Add(newRow.ItemArray); + } + /// 计算EditorButton文本所需的精确宽度 /// diff --git a/插件库/Lskj.Control/Model/ControlType.cs b/插件库/Lskj.Control/Model/ControlType.cs index 1ddd0e3..661770e 100644 --- a/插件库/Lskj.Control/Model/ControlType.cs +++ b/插件库/Lskj.Control/Model/ControlType.cs @@ -137,7 +137,7 @@ namespace Lskj.Control.Model /// public const int LabAutoCompleteValueParam = 15; /// - /// 自动搜索框(带参数) 保存Value值,显示Text值 + /// 自动搜索框(带参数) 保存Text值,显示Text值 /// public const int LabAutoCompleteTextParam = 16; /// @@ -490,6 +490,17 @@ namespace Lskj.Control.Model /// public const int LabSelectReturnTextSingleNew = 172; + + + /// + /// 测试特殊搜索框返回id + /// + public const int SpecialSearchBoxToId = 181; + /// + /// 测试特殊搜索框返回text + /// + public const int SpecialSearchBoxToText = 182; + /// /// 说明:是否为Value类型 /// 创建人:龚宇超 diff --git a/插件库/Lskj.Control/Model/PrintUtil.cs b/插件库/Lskj.Control/Model/PrintUtil.cs index 4090f83..a01842b 100644 --- a/插件库/Lskj.Control/Model/PrintUtil.cs +++ b/插件库/Lskj.Control/Model/PrintUtil.cs @@ -26,6 +26,7 @@ using FastReport; using FastReport.Preview; using System.Windows.Forms; using System.Threading.Tasks; +using Lskj.Business; namespace Lskj.Control.Model { @@ -115,7 +116,7 @@ namespace Lskj.Control.Model if (OnAfterPrint != null) OnAfterPrint(null, null); } - else if (ERPInfo.Instance.IsUserManager) + else if (ERPInfo.Instance.IsUserManager|| SystemInfo.Instance.PrintTemplate.Split(',').Contains(ERPInfo.Instance.UserName)) { using (BaseForm form = new BaseForm()) { @@ -178,33 +179,4 @@ namespace Lskj.Control.Model form.Dispose(); } - private static void Preview_OnPrint(object sender, PreviewControl.PrintEventArgs e) - { - try - { - - if (e.Preview != null && e.Preview.Report != null && e.Preview.Report.Preview != null) - { - //this.ReportObj.PrintSettings.PageRange = PageRange.All; // 设置为全部页面 - //this.ReportObj.PrintSettings.PageNumbers = ""; // 清空页码范围 - bool isPrint = e.Preview.Report.Preview.Print(); - if (isPrint) - { - if (OnAfterPrint != null) - OnAfterPrint(sender, e); - } - } - else - { - MessageUtil.Show("Preview, Report or Report Preview is null"); - } - } - catch (Exception ex) - { - string Message = ErrorMessage.PromptErrorMessage(ex); - MessageUtil.Show(Message, ex.Message); - } - } - - } -} + private static void Preview_OnPrint(object sender, PreviewControl.PrintEventArgs e) \ No newline at end of file diff --git a/插件库/Lskj.Control/TabControlEx.cs b/插件库/Lskj.Control/TabControlEx.cs index 1ada6da..a046db0 100644 --- a/插件库/Lskj.Control/TabControlEx.cs +++ b/插件库/Lskj.Control/TabControlEx.cs @@ -136,6 +136,12 @@ namespace Lskj.Control /// public event EventHandler OnMrpDragCallback; public event EventHandler OnMrpBtnClickCallback; + + /// + /// 右键执行后回调(针对单据,单据主表明细不是ModuleGridEx,SearchLastGrid方法无效) + /// + public event EventHandler BillDetailRightGridCallBack; + /// /// 明细页签与主模块对应关系 /// @@ -489,7 +495,7 @@ namespace Lskj.Control // 1️⃣ 预分组:Rightdockid > 0 的明细 var rightGroups = gridDetail - .Where(m => m.Rightdockid > 0) + .Where(m => m.Rightdockid != 0) .GroupBy(m => m.Rightdockid) .ToDictionary(g => g.Key, g => g.ToList()); @@ -500,7 +506,7 @@ namespace Lskj.Control foreach (GridDetailModel model in gridDetail) { // 子明细交给父明细右侧页签生成 - if (model.Rightdockid > 0) continue; + if (model.Rightdockid != 0) continue; if (this.DetaiName.Equals(model.DetailName) && isGridmerge) continue; @@ -1403,6 +1409,7 @@ namespace Lskj.Control tabMultipledetails.Model = this.Model; tabMultipledetails.OnSaveGridCallBack += OnDetailSaveGridCallBack; tabMultipledetails.DetailRightGridCallBack += OnDetailRightCallback; + tabMultipledetails.BillDetailRightGridCallBack += BillDetailRightGridCallBack; tabMultipledetails.DrgaParentPrimaryKey = this.DrgaParentPrimaryKey; tabMultipledetails.InitTabPages(isMeage); tabMultipledetails.Dock = DockStyle.Fill; @@ -1442,6 +1449,8 @@ namespace Lskj.Control gridEx.OnSaveGridCallBack += OnDetailSaveGridCallBack; gridEx.DetailRightGridCallBack += OnDetailRightCallback; + if(model.BottomRefreshMain) gridEx.RightGridCallBack += BillDetailRightGridCallBack; + gridEx.Name = "gridEx"; gridEx.IsDetail = true; gridEx.Dock = DockStyle.Fill; diff --git a/插件库/Lskj.Control/TabMultipledetails.cs b/插件库/Lskj.Control/TabMultipledetails.cs index 9509a6a..7243b23 100644 --- a/插件库/Lskj.Control/TabMultipledetails.cs +++ b/插件库/Lskj.Control/TabMultipledetails.cs @@ -89,6 +89,12 @@ namespace Lskj.Control /// 下面明细表右键执行后回调 /// public event EventHandler DetailRightGridCallBack; + + /// + /// TabMultipledetails右键执行后回调(针对单据,单据主表明细不是ModuleGridEx,SearchLastGrid方法无效) + /// + public event EventHandler BillDetailRightGridCallBack; + #endregion #region /// @@ -236,7 +242,12 @@ namespace Lskj.Control ModuleGridEx gridEx = new ModuleGridEx(); gridEx.RightGridCallBack += OnGridAfterRightCallBack; - if (model.BottomRefreshMain) gridEx.OnSaveGridCallBack += OnRefreshMainTable; + + if (model.BottomRefreshMain) + { + gridEx.OnSaveGridCallBack += OnRefreshMainTable; + } + gridEx.Name = "gridEx"; gridEx.IsDetail = true; gridEx.Dock = DockStyle.Fill; @@ -686,7 +697,18 @@ namespace Lskj.Control { //刷新主表,主表刷新后会默认刷新下方左右表 int oldRowHandle = gridEx1.GridControlObj.GridView.FocusedRowHandle;//上一次选中行 - this.ParentControlEx.SearchLastGrid(); + + if (BillDetailRightGridCallBack!=null) + { + this.BillDetailRightGridCallBack(sender, e); + } + else + { + this.ParentControlEx.SearchLastGrid(); + } + + + if (gridEx1.SearchObj.RememberRow) { gridEx1.GridControlObj.GridView.SelectRowHandler(oldRowHandle); @@ -706,7 +728,17 @@ namespace Lskj.Control { //刷新主表,主表刷新后会默认刷新下方左右表 int oldRowHandle = gridEx2.GridControlObj.GridView.FocusedRowHandle;//上一次选中行 - this.ParentControlEx.SearchLastGrid(); + + if (BillDetailRightGridCallBack != null) + { + this.BillDetailRightGridCallBack(sender, e); + } + else + { + this.ParentControlEx.SearchLastGrid(); + } + + if (gridEx2.SearchObj.RememberRow) { gridEx2.GridControlObj.GridView.SelectRowHandler(oldRowHandle); @@ -721,7 +753,7 @@ namespace Lskj.Control } /// - /// 下方表格保存或者执行右键后刷新 + /// 下方表格保存后刷新 /// /// /// @@ -732,7 +764,16 @@ namespace Lskj.Control //刷新主表,主表刷新后会默认刷新下方左右表 int oldRowHandle = gridEx1.GridControlObj.GridView.FocusedRowHandle;//上一次选中行 int oldRowHandle2 = gridEx2.GridControlObj.GridView.FocusedRowHandle;//上一次选中行 - this.ParentControlEx.SearchLastGrid(); + + if (BillDetailRightGridCallBack != null) + { + this.BillDetailRightGridCallBack(sender, e); + } + else + { + this.ParentControlEx.SearchLastGrid(); + } + if (gridEx1.SearchObj.RememberRow) { gridEx1.GridControlObj.GridView.SelectRowHandler(oldRowHandle); @@ -789,4 +830,5 @@ namespace Lskj.Control //重新根据主表数据查询 private void SearchObj_OnSearchAfterCallBack(object sender, EventArgs e) { + DataRow rowItem = th \ No newline at end of file