Exemple #1
0
        /// <summary>
        /// 需要用到的数据库字段:OpenClassName,OpenClassMethod,OpenClassParameters。
        /// OpenClassParameters是放多个值,用","分隔,按顺序调用,其中记录的是数据库的字段名,并且跟OpenClassMethod的参数相对应(p_frmInvoker除外)。
        /// 查询时返回的二维数值前若干列返回OpenClassParameters对应的数据库中的值。
        /// </summary>
        /// <param name="p_objDefinition">查询类型</param>
        /// <param name="p_strResArr">查询结果的数组</param>
        /// <param name="p_intClickRow">用户点击的记录行</param>
        private void m_mthOpenOrderByReflection(clsStatisticDefinitionValue p_objDefinition, string [,] p_strResArr, int p_intClickRow)
        {
            int intParametersNum = m_intGetDefinitionParametersNum(p_objDefinition);

            object[] objArr = new object[intParametersNum + 1];
            objArr[0] = this;
            for (int i = 0; i < objArr.Length - 1; i++)
            {
                objArr[i + 1] = p_strResArr[p_intClickRow, i];
            }

            this.Cursor = Cursors.WaitCursor;
            try
            {
                Type   typ = Type.GetType(p_objDefinition.m_strOpenClassName.Trim());
                Object obj = Activator.CreateInstance(typ);
                typ.GetMethod(p_objDefinition.m_strOpenClassMethod.Trim()).Invoke(obj, objArr);
            }
            catch
            {
                this.Cursor = Cursors.Default;
                return;
            }
            this.Cursor = Cursors.Default;
        }
Exemple #2
0
        /// <summary>
        /// 显示查询结果
        /// </summary>
        /// <param name="p_objDefinition">查询类型</param>
        /// <param name="p_strQueryReslutDArr">查询结果</param>
        private void m_mthDisplayResult(clsStatisticDefinitionValue p_objDefinition, string [,] p_strQueryReslutDArr)
        {
            if (p_objDefinition == null || p_strQueryReslutDArr == null)
            {
                return;
            }

            int intParametersNum = m_intGetDefinitionParametersNum(p_objDefinition);

            int intColumnNum = m_lsvQueryResult.Columns.Count;
            int intRowNum    = p_strQueryReslutDArr.Length / (intColumnNum + intParametersNum);

            ListViewItem[] objLsvItemArr = new ListViewItem[intRowNum];
            for (int i = 0; i < intRowNum; i++)
            {
                string[] strItemArr = new string[intColumnNum];
                for (int k2 = 0; k2 < intColumnNum; k2++)
                {
                    strItemArr[k2] = p_strQueryReslutDArr[i, k2 + intParametersNum];
                }
                objLsvItemArr[i] = new ListViewItem(strItemArr);
            }
            m_lsvQueryResult.Items.AddRange(objLsvItemArr);
            m_lsvQueryResult.Tag = p_strQueryReslutDArr;
        }
Exemple #3
0
        /// <summary>
        /// 获取查询结果
        /// </summary>
        /// <param name="p_objDefinition">查询类型</param>
        /// <param name="p_objQueryMode">查询模板</param>
        /// <returns></returns>
        private string [,] m_strGetResultArr(clsStatisticDefinitionValue p_objDefinition, clsStatisticQueryModeValue p_objQueryMode)
        {
            if (p_objDefinition == null || m_blnIsEmptyString(p_objDefinition.m_strStatisticSQLContent) || m_blnIsEmptyString(p_objDefinition.m_strOpenClassParameters))
            {
                return(null);
            }

            if (p_objQueryMode == null || m_blnIsEmptyString(p_objQueryMode.m_strSelectedFieldIndexes))
            {
                return(null);
            }

            string [,] strQueryReslutDArr = null;
            long lngRes = m_objDomain.m_lngPerformSqlQuery(p_objDefinition.m_strStatisticSQLContent, p_objDefinition.m_strOpenClassParameters, p_objQueryMode.m_strSelectedFieldIndexes.Replace(c_strSplitSelectedFieldSymbol, ","),
                                                           (XmlDocument)dataGrid1.Tag, out strQueryReslutDArr);

            if (lngRes <= 0 || strQueryReslutDArr == null)
            {
                return(null);
            }
            else
            {
                return(strQueryReslutDArr);
            }
        }
Exemple #4
0
        /// <summary>
        /// 初始化查询模板细节信息
        /// </summary>
        /// <param name="p_objDefinition">查询类型</param>
        /// <param name="p_objQueryMode">查询模板</param>
        private void m_mthInitQueryDetail(clsStatisticDefinitionValue p_objDefinition, clsStatisticQueryModeValue p_objQueryMode)
        {
            if (p_objDefinition == null || m_blnIsEmptyString(p_objDefinition.m_strStatistic_ID) || p_objQueryMode == null || m_blnIsEmptyString(p_objQueryMode.m_strModeDesc))
            {
                return;
            }

            m_lblSearchDesc.Text = "查询说明:" + p_objQueryMode.m_strModeDesc;

            m_mthLoadXmlToDataGrid(p_objDefinition, p_objQueryMode);
        }
Exemple #5
0
        /// <summary>
        /// 初始化查询模板信息
        /// </summary>
        /// <param name="p_trnQueryMode">查询模板的树节点。如果节点不是查询模板节点,不做任何操作</param>
        private void m_mthInitQueryModeInfo(TreeNode p_trnQueryMode)
        {
            m_mthClearQueryInfo();

            if (!m_blnIsQueryModeTreeNode(p_trnQueryMode))
            {
                return;
            }

            clsStatisticQueryModeValue  objQueryMode  = (clsStatisticQueryModeValue)p_trnQueryMode.Tag;
            clsStatisticDefinitionValue objDefinition = (clsStatisticDefinitionValue)p_trnQueryMode.Parent.Tag;

            m_mthInitQueryDisplayField(objDefinition, objQueryMode);
            m_mthInitQueryDetail(objDefinition, objQueryMode);
        }
Exemple #6
0
        /// <summary>
        /// 把Xml中用户定义值放置在DataGrid
        /// </summary>
        /// <param name="p_objDefinition">查询类型</param>
        /// <param name="p_objQueryMode">查询模板</param>
        private void m_mthLoadXmlToDataGrid(clsStatisticDefinitionValue p_objDefinition, clsStatisticQueryModeValue p_objQueryMode)
        {
            if (p_objDefinition == null || p_objQueryMode == null || m_blnIsEmptyString(p_objQueryMode.m_strXMLContent))
            {
                return;
            }

            XmlDocument objXmlDoc = new XmlDocument();

            try
            {
                objXmlDoc.LoadXml(p_objQueryMode.m_strXMLContent);
            }
            catch
            {
                return;
            }

            XmlNodeList xnlUserCondition = objXmlDoc.GetElementsByTagName(c_strUserCondiction);

            if (xnlUserCondition.Count <= 0)
            {
                return;
            }

            clsStatisticCondictionOptionValue [] objCondictionOptionArr = (clsStatisticCondictionOptionValue [])m_hasConditionField[p_objDefinition.m_strStatistic_ID];

            if (objCondictionOptionArr == null)
            {
                long lngRes = m_objDomain.m_lngGetStatisticCondictionOptionValue(p_objDefinition.m_strStatistic_ID, out objCondictionOptionArr);

                if (lngRes <= 0 || objCondictionOptionArr == null)
                {
                    return;
                }

                m_hasConditionField[p_objDefinition.m_strStatistic_ID] = objCondictionOptionArr;
            }

            foreach (XmlNode xndCondition in xnlUserCondition)
            {
                XmlNode xndParentCondition = xndCondition;

                m_mthAddUserConditionToDataGrid(xndCondition, objCondictionOptionArr);
            }

            dataGrid1.Tag = objXmlDoc;
        }
Exemple #7
0
        /// <summary>
        /// 初始化查询结果字段
        /// </summary>
        /// <param name="p_objDefinition">查询类型</param>
        /// <param name="p_objQueryMode">查询模板</param>
        private void m_mthInitQueryDisplayField(clsStatisticDefinitionValue p_objDefinition, clsStatisticQueryModeValue p_objQueryMode)
        {
            if (p_objDefinition == null || m_blnIsEmptyString(p_objDefinition.m_strStatistic_ID) || p_objQueryMode == null || m_blnIsEmptyString(p_objQueryMode.m_strSelectedFieldIndexes))
            {
                return;
            }

            clsStatisticSelectedFieldValue [] objSelectedFieldArr = (clsStatisticSelectedFieldValue [])m_hasSelectedField[p_objDefinition.m_strStatistic_ID];

            if (objSelectedFieldArr == null)
            {
                long lngRes = m_objDomain.m_lngGetAllStatisticSelectedField(p_objDefinition.m_strStatistic_ID, out objSelectedFieldArr);

                if (lngRes <= 0 || objSelectedFieldArr == null || objSelectedFieldArr.Length == 0)
                {
                    return;
                }

                m_hasSelectedField[p_objDefinition.m_strStatistic_ID] = objSelectedFieldArr;
            }

            string[] strSelectedFieldsArr = null;
            if (p_objQueryMode.m_strSelectedFieldIndexes.IndexOf(c_strSplitSelectedFieldSymbol) < 0)
            {
                strSelectedFieldsArr    = new string[1];
                strSelectedFieldsArr[0] = p_objQueryMode.m_strSelectedFieldIndexes.Trim();
            }
            else
            {
                strSelectedFieldsArr = p_objQueryMode.m_strSelectedFieldIndexes.Split(c_strSplitSelectedFieldSymbol.ToCharArray());
            }

            for (int i = 0; i < strSelectedFieldsArr.Length; i++)
            {
                for (int j2 = 0; j2 < objSelectedFieldArr.Length; j2++)
                {
                    if (objSelectedFieldArr[j2].m_strFieldName == strSelectedFieldsArr[i])
                    {
                        m_lsvQueryResult.Columns.Add(objSelectedFieldArr[j2].m_strFieldDesc, 120, HorizontalAlignment.Left);
                        break;
                    }
                }
            }
        }
Exemple #8
0
        /// <summary>
        /// 获取查询类型中定义的参数个数
        /// </summary>
        /// <param name="p_objDefinition">查询类型</param>
        /// <returns></returns>
        private int m_intGetDefinitionParametersNum(clsStatisticDefinitionValue p_objDefinition)
        {
            int intParametersNum = 0;

            if (m_blnIsEmptyString(p_objDefinition.m_strOpenClassParameters))
            {
                intParametersNum = 0;
            }
            else if (p_objDefinition.m_strOpenClassParameters.IndexOf(",") < 0)
            {
                intParametersNum = 1;
            }
            else
            {
                intParametersNum = p_objDefinition.m_strOpenClassParameters.Split(',').Length;
            }

            return(intParametersNum);
        }
Exemple #9
0
        /// <summary>
        /// 查询
        /// </summary>
        private void m_mthSearch()
        {
            m_lsvQueryResult.Items.Clear();

            TreeNode trnCurrentQueryMode = trvSearchType.SelectedNode;

            //判断是否查询模板的节点
            if (!m_blnIsQueryModeTreeNode(trnCurrentQueryMode))
            {
                return;
            }

            clsStatisticQueryModeValue  objQueryMode  = (clsStatisticQueryModeValue)trnCurrentQueryMode.Tag;
            clsStatisticDefinitionValue objDefinition = (clsStatisticDefinitionValue)trnCurrentQueryMode.Parent.Tag;

            m_mthMakeXmlContentValue();

            string [,] strQueryReslutDArr = m_strGetResultArr(objDefinition, objQueryMode);

            m_mthDisplayResult(objDefinition, strQueryReslutDArr);
        }
Exemple #10
0
        private void m_lsvQueryResult_DoubleClick(object sender, System.EventArgs e)
        {
            if (m_lsvQueryResult.SelectedIndices == null ||
                m_lsvQueryResult.SelectedIndices.Count == 0)
            {
                return;
            }

            TreeNode trnCurrentQueryMode = trvSearchType.SelectedNode;

            //判断是否查询模板的节点
            if (!m_blnIsQueryModeTreeNode(trnCurrentQueryMode))
            {
                return;
            }

            clsStatisticDefinitionValue objDefinition = (clsStatisticDefinitionValue)trnCurrentQueryMode.Parent.Tag;


            m_mthOpenOrderByReflection(objDefinition, (string[, ])m_lsvQueryResult.Tag, m_lsvQueryResult.SelectedIndices[0]);
        }
Exemple #11
0
        /// <summary>
        /// 初始化已经生成的查询模板
        /// </summary>
        /// <param name="p_trnDefinition">查询模板相对应的查询类型节点。如果节点不是查询类型节点,不做任何操作</param>
        private void m_mthInitStatisticQueryNode(TreeNode p_trnDefinition)
        {
            if (!m_blnIsDefinitionTreeNode(p_trnDefinition))
            {
                return;
            }

            //判断是否已经初始化
            if (!(p_trnDefinition.Nodes.Count == 1 && p_trnDefinition.Nodes[0].Tag == null))
            {
                return;
            }

            clsStatisticDefinitionValue objStatisDefValue = (clsStatisticDefinitionValue)p_trnDefinition.Tag;

            p_trnDefinition.Nodes.Clear();

            clsStatisticQueryModeValue[] objStaticQueryMode;

            long lngRes = m_objDomain.m_lngGetStatisticQueryMode(objStatisDefValue.m_strStatistic_ID, out objStaticQueryMode);

            if (lngRes <= 0 || objStaticQueryMode == null || objStaticQueryMode.Length == 0)
            {
                return;
            }

            for (int i = 0; i < objStaticQueryMode.Length; i++)
            {
                TreeNode trnType = new TreeNode(objStaticQueryMode[i].m_strQueryName);
                trnType.Tag = objStaticQueryMode[i];

                p_trnDefinition.Nodes.Add(trnType);
            }

            p_trnDefinition.Expand();
        }