コード例 #1
0
        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;
        }
コード例 #2
0
        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;
        }