Пример #1
0
        //全部删除菜单响应
        public override void OnClick()
        {
            if (m_Hook.GridCtrl == null)
            {
                return;
            }
            FaceControl  pfacecontrol = (FaceControl)m_Hook.MainUserControl;
            DataGridView pGridControl = m_Hook.GridCtrl;

            if (pfacecontrol.getEditable() == false)
            {
                return;
            }
            string connstr, Tablename;

            //获取数据库连接串和表名
            connstr   = pfacecontrol.m_connstr;
            Tablename = pfacecontrol.m_TableName;
            if (Tablename.Contains("."))
            {
                Tablename = Tablename.Split('.')[1];//处理SDE表
            }
            FaceControl pFaceControl = (FaceControl)(m_Hook.MainUserControl);

            if (pGridControl.DataSource == null)
            {
                return;
            }
            //删除数据时要询问一次
            if (DevComponents.DotNetBar.MessageBoxEx.Show("确定要全部删除吗?删除后不可恢复!", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
            {
                return;
            }
            try
            {
                if (GeoDataCenterFunLib.LogTable.m_sysTable == null)
                {
                    return;
                }
                Exception ex = null;
                LogTable.m_sysTable.DeleteRows(Tablename, "", out ex);//删除
                if (ex != null)
                {
                    throw new Exception("删除全部数据失败!", ex);
                }
            }
            catch (Exception pEx)
            {
                DevComponents.DotNetBar.MessageBoxEx.Show(pEx.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            pfacecontrol.InitDataInfoList(Tablename);
            ////ZQ   20111017   add  及时更新数据字典
            switch (Tablename)
            {
            case "属性对照表":
                SysCommon.ModField.InitNameDic(Plugin.ModuleCommon.TmpWorkSpace, SysCommon.ModField._DicFieldName, "属性对照表");
                break;

            case "标准图层代码表":
                SysCommon.ModField.InitLayerNameDic(Plugin.ModuleCommon.TmpWorkSpace, SysCommon.ModField._DicLayerName);
                break;
                //default:
                //    ///ZQ 20111020 add 增加重启提示
                //    MessageBox.Show("删除的记录只有应用系统重启以后才能生效!", "提示!");
                //    break;
            }
            /////
            if (this.WriteLog)
            {
                Plugin.LogTable.Writelog(Caption);//xisheng 2011.07.09 增加日志
            }
            //OleDbConnection mycon = new OleDbConnection(connstr);   //定义OleDbConnection对象实例并连接数据库
            ////构造删除数据的语句
            //string strExp = "delete from " + Tablename ;
            //OleDbCommand aCommand = new OleDbCommand(strExp, mycon);
            //mycon.Open();
            ////执行删除语句
            //aCommand.ExecuteNonQuery();
            //mycon.Close();
            ////再次初始化datagridview控件
            //pfacecontrol.InitDataInfoList(Tablename );

            //if (m_Hook != null)
            //{
            //    LogFile log = new LogFile(m_Hook.tipRichBox, m_Hook.strLogFilePath);
            //    if (log != null)
            //    {
            //        log.Writelog("数据全部删除");

            //    }
            //}

            /*       Exception eError;
             *     AddGroup frmGroup = new AddGroup();
             *     if (frmGroup.ShowDialog() == DialogResult.OK)
             *     {
             *         ModuleOperator.DisplayRoleTree("", m_Hook.RoleTree, ref ModData.gisDb, out eError);
             *         if (eError != null)
             *         {
             *             ErrorHandle.ShowFrmError("提示", eError.Message);
             *             return;
             *         }
             *     }
             */
        }
Пример #2
0
        //删除记录菜单响应
        public override void OnClick()
        {
            if (m_Hook.GridCtrl == null)
            {
                return;
            }
            FaceControl  pfacecontrol = (FaceControl)m_Hook.MainUserControl;
            DataGridView pGridControl = m_Hook.GridCtrl;

            if (pfacecontrol.getEditable() == false)
            {
                return;
            }
            string connstr, Tablename;

            //获取数据库连接串和表名
            connstr   = pfacecontrol.m_connstr;
            Tablename = pfacecontrol.m_TableName;
            if (Tablename.Contains("."))
            {
                Tablename = Tablename.Split('.')[1];//处理SDE表
            }
            FaceControl pFaceControl = (FaceControl)(m_Hook.MainUserControl);

            if (pGridControl.DataSource == null)
            {
                return;
            }
            //如果未选中记录...
            if (pGridControl.SelectedRows.Count == 0)
            {
                DevComponents.DotNetBar.MessageBoxEx.Show("未选中记录!");
                return;
            }
            int k = pGridControl.SelectedRows.Count;

            //删除数据时,要询问一次
            if (pGridControl.SelectedRows.Count > 0)
            {
                if (DevComponents.DotNetBar.MessageBoxEx.Show("确定要删除选中的记录吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
                {
                    return;
                }
            }

            //OleDbConnection mycon = new OleDbConnection(connstr);   //定义OleDbConnection对象实例并连接数据库
            //string strExp = "";
            //OleDbCommand aCommand = new OleDbCommand(strExp, mycon);
            //mycon.Open();
            //int i = 0, j = 0;
            if (GeoDataCenterFunLib.LogTable.m_sysTable == null)
            {
                return;
            }
            Exception err;
            ITable    pTable = LogTable.m_sysTable.OpenTable(Tablename, out err);

            if (pTable == null)
            {
                //MessageBox.Show(err.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                ErrorHandle.ShowFrmErrorHandle("提示", err.Message);
                return;//若日志表不存在,返回null
            }
            if (pGridControl.SelectedRows.Count > 0)
            {
                string objectID = pTable.OIDFieldName;
                string strExp   = objectID + " IN (";
                for (int h = 0; h < pGridControl.SelectedRows.Count; h++)
                {
                    //构造删除记录的语句

                    for (int i = 0; i < pGridControl.ColumnCount; i++)
                    {
                        if (pGridControl.Columns[i].Name.ToUpper().Equals("ID"))
                        {
                            strExp += pGridControl.SelectedRows[h].Cells[i].Value.ToString() + ",";
                        }
                    }
                }
                strExp  = strExp.Substring(0, strExp.Length - 1);
                strExp += ")";
                //执行删除记录的语句段
                IWorkspace    pWorkspace    = LogTable.m_gisDb.WorkSpace;
                ITransactions pTransactions = (ITransactions)pWorkspace;
                try
                {
                    if (!pTransactions.InTransaction)
                    {
                        pTransactions.StartTransaction();
                    }
                }
                catch (Exception eX)
                {
                    SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", eX.Message);
                    return;
                }
                Exception exError;
                if (!LogTable.m_sysTable.DeleteRows(Tablename, strExp, out exError))
                {
                    ErrorHandle.ShowFrmErrorHandle("提示", "删除记录失败!" + exError.Message);
                    return;
                }

                try
                {
                    if (pTransactions.InTransaction)
                    {
                        pTransactions.CommitTransaction();
                    }
                }
                catch (Exception eX)
                {
                }
            }


            //再次初始化datagridview控件
            pfacecontrol.InitDataInfoList(Tablename);

            ////ZQ   20111017   add  及时更新数据字典
            switch (Tablename)
            {
            case "属性对照表":
                SysCommon.ModField.InitNameDic(Plugin.ModuleCommon.TmpWorkSpace, SysCommon.ModField._DicFieldName, "属性对照表");
                break;

            case "标准图层代码表":
                SysCommon.ModField.InitLayerNameDic(Plugin.ModuleCommon.TmpWorkSpace, SysCommon.ModField._DicLayerName);
                break;
                //default:
                //    ///ZQ 20111020 add 增加重启提示
                //    MessageBox.Show("删除的记录只有应用系统重启以后才能生效!", "提示!");
                //    break;
            }
            /////
            if (this.WriteLog)
            {
                Plugin.LogTable.Writelog(Caption);//xisheng 2011.07.09 增加日志
            }

            /*       Exception eError;
             *     AddGroup frmGroup = new AddGroup();
             *     if (frmGroup.ShowDialog() == DialogResult.OK)
             *     {
             *         ModuleOperator.DisplayRoleTree("", m_Hook.RoleTree, ref ModData.gisDb, out eError);
             *         if (eError != null)
             *         {
             *             ErrorHandle.ShowFrmError("提示", eError.Message);
             *             return;
             *         }
             *     }
             */
        }
Пример #3
0
        public bool Parse()
        {
            var temp = this.Content;

            var results          = new List <string>();
            var potentialResults = new Stack <string>();
            var prefix           = string.Empty;

            var parses = Instructions.Split('|');

            foreach (var parse in parses)
            {
                var colon = parse.IndexOf(':');
                if (colon > -1)
                {
                    var cmd       = parse.Substring(0, colon);
                    var part      = parse.Substring(colon + 1);
                    var save      = cmd.Contains("?");
                    var nextToken = cmd.Contains("&");
                    var prefixed  = cmd.Contains("+");
                    var restore   = cmd.Contains("^");

                    if (nextToken)
                    {
                        results.Add(temp);
                        temp = "";
                    }

                    if (prefixed)
                    {
                        prefix += temp;
                        temp    = string.Empty;
                    }

                    if (restore)
                    {
                        temp = potentialResults.Count > 0 ? potentialResults.Pop() : this.Content;
                    }

                    if (save)
                    {
                        potentialResults.Push(prefix + temp);
                        prefix = string.Empty;
                    }

                    var contains = temp.Contains(part);

                    if (cmd.Contains("i"))
                    {
                        if (!CheckDoc(temp))
                        {
                            return(false);
                        }

                        nodes        = doc.SelectNodes(part);
                        IsDictionary = true;
                    }
                    else if (cmd.Contains("k"))
                    {
                        keypart = part;
                    }
                    else if (cmd.Contains("v"))
                    {
                        valuepart = part;
                    }
                    else if (cmd.Contains("table") && nodes != null)
                    {
                        if (part.Contains("name="))
                        {
                            Tablename = part.Substring(part.IndexOf("name=") + 5);
                            var j = Tablename.IndexOf(";");
                            if (j > -1)
                            {
                                Tablename = Tablename.Substring(0, j);
                            }
                        }

                        foreach (var node in nodes)
                        {
                            IXmlNode key = null;
                            Windows.Data.Xml.Dom.XmlNodeList valueset = null;
                            try
                            {
                                key      = node.SelectSingleNode(keypart);
                                valueset = node.SelectNodes(valuepart);
                            }
                            catch (Exception)
                            {
                                //skip if not matching
                                continue;
                            }

                            if (!string.IsNullOrWhiteSpace(key?.InnerText))
                            {
                                if (!string.IsNullOrWhiteSpace(key.InnerText) && !dictionary.ContainsKey(key.InnerText))
                                {
                                    var values = new StringBuilder();
                                    var count  = valueset.Count();
                                    foreach (var value in valueset)
                                    {
                                        values.Append(value.InnerText);
                                        if (--count > 0)
                                        {
                                            values.Append("~");
                                        }
                                    }

                                    dictionary.Add(key.InnerText, values.ToString());
                                }
                            }
                        }

                        Debug.WriteLine(string.Format("Table {0} saved count = {1}", Tablename, dictionary.Count));
                    }
                    else if (cmd.Contains("R"))
                    {
                        temp = temp.RightOf(part);
                    }
                    else if (cmd.Contains("L"))
                    {
                        temp = temp.LeftOf(part);
                    }
                    else if (cmd.Contains("B"))
                    {
                        temp = temp.Between(part);
                    }
                    else if (cmd.Contains("!"))
                    {
                        temp = part;
                    }
                    else if (cmd.Contains("J") || cmd.Contains("j"))
                    {
                        var jParsed = JToken.Parse(temp);
                        if (jParsed != null)
                        {
                            var jToken = jParsed.SelectToken(part);
                            if (jToken != null)
                            {
                                if (cmd.Contains("j"))
                                {
                                    temp = ((JProperty)jToken).Name;
                                    if (cmd.Contains("J"))
                                    {
                                        temp += ":'" + jToken.Value <string>() + "'";
                                    }
                                }
                                else
                                {
                                    temp = jToken.Value <string>();
                                }
                            }
                            else
                            {
                                temp = string.Empty;
                            }
                        }
                        else
                        {
                            temp = string.Empty;
                        }
                    }
                    else if (cmd.Contains("X"))
                    {
                        var expr         = new Regex(part);
                        var matches      = expr.Match(part);
                        var matchResults = new StringBuilder();
                        while (matches.Success)
                        {
                            contains = true;
                            matchResults.Append(matches.Value);
                            matchResults.Append("~");
                            matches = matches.NextMatch();
                        }

                        temp = matchResults.ToString();
                        if (!string.IsNullOrWhiteSpace(temp))
                        {
                            temp = temp.Substring(0, temp.Length - 1);
                        }
                    }
                    else if (cmd.Contains("F"))
                    {
                        results.Add(prefix + temp);
                        prefix = string.Empty;
                        temp   = string.Format(part, results.ToArray());
                        results.Clear();
                    }

                    if (save && !contains)
                    {
                        temp = potentialResults.Pop();
                    }
                }

                if (string.IsNullOrWhiteSpace(temp))
                {
                    break;
                }
            }

            if (!string.IsNullOrWhiteSpace(temp))
            {
                results.Add(prefix + temp);
                prefix = string.Empty;
            }

            var builder = new StringBuilder();

            for (var i = 0; i < results.Count; i++)
            {
                builder.Append(results[i]);
                if (i < results.Count - 1)
                {
                    builder.Append("|");
                }
            }

            Result = builder.Length == 0 ? string.Empty : builder.ToString();

            return(true);
        }