protected override void OnInputPromptValidating(TSEditorInputPromptGetDataEventArgs e) { base.OnInputPromptValidating(e); bool bReGetData = true; if (bReGetData) { #region -- 使用 FieldEntity 指定的配置查询 -- int iPromptBizObjID = this.LBViewType; if (iPromptBizObjID > 0) { #region -- 基类的查询条件 -- string strCriteriaBase = ""; //if (e.GetDataByValue) //{ // TS.Win.BizObj.BizObjHelper.AddServerCriteria( // ref sb, "", string.Format("(cast({0} as nvarchar(100)) = '{1}')", this.IDColumnName, e.Value.ToString().TrimEnd()), false, false); //} //else //{ // if (string.IsNullOrEmpty(this.IDColumnName) || // string.IsNullOrEmpty(this.CodeColumnName) || // string.IsNullOrEmpty(this.TextColumnName)) // { // //TS.Win.Helper.WinFunction.DevErrorPrompt(string.Format("请指定商业对象({0})的 CodeColumnName,TextColumnName。", iPromptBizObjID)); // } // if ((TS.Win.Helper.WinFunction.TSPromptItemModel && iNCodeClassID == TS.Win.Helper.WinFunction.MC_iItemNCodeClassID) // || (mbAlwaysPromptItemModel && this.ListColumns.Contains(TS.Win.Helper.WinFunction.MC_strItemModelFieldName))) // { // TS.Win.BizObj.BizObjHelper.AddServerCriteria( // ref sb, "", // string.Format("(cast({0} as nvarchar(100)) = '{2}' or cast({1} as nvarchar(100)) = '{2}' or {3} = '{2}')", // this.CodeColumnName, this.TextColumnName, e.InputText, TS.Win.Helper.WinFunction.MC_strItemModelFieldName), // false, false); // } // else if (TS.Win.Helper.WinFunction.TSPromptCustomerShortName && iNCodeClassID == TS.Win.Helper.WinFunction.MC_iCustomerClassID) // { // TS.Win.BizObj.BizObjHelper.AddServerCriteria( // ref sb, "", // string.Format("(cast({0} as nvarchar(100)) = '{2}' or cast({1} as nvarchar(100)) = '{2}' or {3} = '{2}')", // this.CodeColumnName, this.TextColumnName, e.InputText, TS.Win.Helper.WinFunction.MC_strShortNameFieldName), // false, false); // } // else if (TS.Win.Helper.WinFunction.TSPromptSupplierShortName && iNCodeClassID == TS.Win.Helper.WinFunction.MC_iSupplierClassID) // { // TS.Win.BizObj.BizObjHelper.AddServerCriteria( // ref sb, "", // string.Format("(cast({0} as nvarchar(100)) = '{2}' or cast({1} as nvarchar(100)) = '{2}' or {3} = '{2}')", // this.CodeColumnName, this.TextColumnName, e.InputText, TS.Win.Helper.WinFunction.MC_strShortNameFieldName), // false, false); // } // else // { // TS.Win.BizObj.BizObjHelper.AddServerCriteria( // ref sb, "", string.Format("(cast({0} as nvarchar(100)) = '{2}' or cast({1} as nvarchar(100)) = '{2}')", this.CodeColumnName, this.TextColumnName, e.InputText), false, false); // } //} //strCriteriaBase = sb.ToString(); #endregion -- 基类的查询条件 -- // 触发事件 string strCriteriaCustomer = ""; bool bUseCriteriaCustomerOnly = false; if (PromptBizObjCreated != null) { PromptBizObjCreatedArgs args = new PromptBizObjCreatedArgs(enPromptBizObjCreatedAction.InputPromptValidating, strCriteriaBase); PromptBizObjCreated(this, args); strCriteriaCustomer = args.CriteriaCustomer; bUseCriteriaCustomerOnly = args.UseCriteriaCustomerOnly; strCriteriaBase = args.CriteriaBase; } // 最终的查询条件 if (!bUseCriteriaCustomerOnly) { if (!string.IsNullOrEmpty(strCriteriaCustomer)) { strCriteriaCustomer = "(" + strCriteriaCustomer + ")"; } if (!string.IsNullOrEmpty(strCriteriaBase)) { strCriteriaBase = "(" + strCriteriaBase + ")"; } if (!string.IsNullOrEmpty(strCriteriaCustomer) && !string.IsNullOrEmpty(strCriteriaBase)) { strCriteriaCustomer += " AND "; } strCriteriaCustomer += strCriteriaBase; } // 执行查询 DataView dvResult = null; try { dvResult = ExecuteSQL.CallView(LBViewType, "", strCriteriaCustomer, LBSort).DefaultView; } catch (Exception ex) { // 返回参数 e.PromptData = null; e.SetError(true, ex.Message); return; } // 查找是否有完全匹配 // 如果多于一行,则优先查找编码完全匹配的 if (dvResult.Count > 1) { dvResult.RowFilter = this.CodeColumnName + "='" + e.InputText + "'"; // 如果不是编码完全匹配,则查找名称完全匹配 if (dvResult.Count == 0) { dvResult.RowFilter = this.TextColumnName + "='" + e.InputText + "'"; // 如果不是名称完全匹配,则查找完全匹配 //if (dvResult.Count == 0) //{ // if ((TS.Win.Helper.WinFunction.TSPromptItemModel && iNCodeClassID == TS.Win.Helper.WinFunction.MC_iItemNCodeClassID) // || (mbAlwaysPromptItemModel && this.ListColumns.Contains(TS.Win.Helper.WinFunction.MC_strItemModelFieldName))) // { // dvResult.RowFilter = TS.Win.Helper.WinFunction.MC_strItemModelFieldName + "='" + e.InputText + "'"; // } // else if (TS.Win.Helper.WinFunction.TSPromptCustomerShortName && iNCodeClassID == TS.Win.Helper.WinFunction.MC_iCustomerClassID) // { // dvResult.RowFilter = TS.Win.Helper.WinFunction.MC_strShortNameFieldName + "='" + e.InputText + "'"; // } // else if (TS.Win.Helper.WinFunction.TSPromptSupplierShortName && iNCodeClassID == TS.Win.Helper.WinFunction.MC_iSupplierClassID) // { // dvResult.RowFilter = TS.Win.Helper.WinFunction.MC_strShortNameFieldName + "='" + e.InputText + "'"; // } //} } if (dvResult.Count == 0 && dvResult.RowFilter != "") { dvResult.RowFilter = ""; } } // 返回参数 e.PromptData = dvResult; mstrLastGetDataInputText = e.InputText; } #endregion -- 使用 FieldEntity 指定的配置查询 -- } mbResetInputPromptDataNextTime = false; }
protected override void OnInputPromptGetData(TSEditorInputPromptGetDataEventArgs e) { base.OnInputPromptGetData(e); if (e.Handled) { return; } bool bReGetData = true; // 总是重新读取,因为改成了在系统配置中加了配置项,最多提示的行数,如果在上次结果中取则会结果不全 ////if( mstrLastGetDataInputText != null && //// !ResetInputPromptDataNextTime && //// ( mstrLastGetDataInputText == "" || e.InputText.IndexOf( mstrLastGetDataInputText ) >= 0 ) && //// this.DataSource != null ) ////{ //// DataView dv = new DataView( this.DataSource.Table ); //// dv.RowFilter = string.Format( "(Convert({0},'System.String') like '%{2}%' or Convert({1},'System.String') like '%{2}%')", this.CodeColumnName, this.TextColumnName, e.InputText ); //// if( dv.Count > 0 ) //// { //// e.PromptData = dv; //// bReGetData = false; //// } ////} if (bReGetData) { #region -- 使用 FieldEntity 指定的配置查询 -- int iLBViewType = this.LBViewType; if (iLBViewType > 0) { string strCriteriaBase = ""; // 触发事件 bool bUseCriteriaCustomerOnly = false; string strCriteriaCustomer = ""; if (PromptBizObjCreated != null) { PromptBizObjCreatedArgs args = new PromptBizObjCreatedArgs(enPromptBizObjCreatedAction.InputPromptStep, strCriteriaBase); PromptBizObjCreated(this, args); strCriteriaCustomer = args.CriteriaCustomer; bUseCriteriaCustomerOnly = args.UseCriteriaCustomerOnly; strCriteriaBase = args.CriteriaBase; } // 最终的查询条件 if (!bUseCriteriaCustomerOnly) { if (!string.IsNullOrEmpty(strCriteriaCustomer)) { strCriteriaCustomer = "(" + strCriteriaCustomer + ")"; } if (!string.IsNullOrEmpty(strCriteriaBase)) { strCriteriaBase = "(" + strCriteriaBase + ")"; } if (!string.IsNullOrEmpty(strCriteriaCustomer) && !string.IsNullOrEmpty(strCriteriaBase)) { strCriteriaCustomer += " AND "; } strCriteriaCustomer += strCriteriaBase; } // 执行查询 //string strPKey; //int ErrorDataBase = 0; //enDataProxyError ErrorDataProxy = enDataProxyError.NoError; //string ErrorDescription = ""; int TotalRecordCount; List <DataColumn> lstFinalAddColumns; // 某些程序通过 SelectedDataRow 读取返回数据,并访问其它非显示的列 string strSelectFields = ""; foreach (string strColName in this.ListColumns) { strSelectFields += (strSelectFields == "" ? "" : ",") + strColName; } List <string> lstTemp = new List <string>(); lstTemp.AddRange(this.ListColumns); if (!string.IsNullOrEmpty(this.IDColumnName) && FindInList(lstTemp, this.IDColumnName) < 0) { strSelectFields += (strSelectFields == "" ? "" : ",") + this.IDColumnName; lstTemp.Add(this.IDColumnName); } if (!string.IsNullOrEmpty(this.CodeColumnName) && FindInList(lstTemp, this.CodeColumnName) < 0) { strSelectFields += (strSelectFields == "" ? "" : ",") + this.CodeColumnName; lstTemp.Add(this.CodeColumnName); } if (!string.IsNullOrEmpty(this.TextColumnName) && FindInList(lstTemp, this.TextColumnName) < 0) { strSelectFields += (strSelectFields == "" ? "" : ",") + this.TextColumnName; lstTemp.Add(this.TextColumnName); } DataView dvResult = ExecuteSQL.CallView(LBViewType, strSelectFields, strCriteriaCustomer, LBSort).DefaultView; // 返回参数 e.PromptData = dvResult; mstrLastGetDataInputText = e.InputText; } #endregion -- 使用 FieldEntity 指定的配置查询 -- } mbResetInputPromptDataNextTime = false; }