zoukankan      html  css  js  c++  java
  • Identify对话框和数据编辑对话框 不错的内容

    ArcEngine开发日志_Identify对话框和数据编辑对话框

    ArcEngine开发日志_Identify对话框和数据编辑对话框

    //获取对象信息

                    pFeatIdObj = pIDArray.get_Element(0) as IFeatureIdentifyObj;
                    pIdObj = pFeatIdObj as IIdentifyObj;
                    pIdObj.Flash(pActiveView.ScreenDisplay);
                    IRowIdentifyObject pRowIdObj = pFeatIdObj as IRowIdentifyObject;//获取对象的属性值
                    int idx1 = pRowIdObj.Row.Fields.FindField("Name");
                    int idx2 = pRowIdObj.Row.Fields.FindField("Type");
                    string pName = pRowIdObj.Row.get_Value(idx1) as string;
                    string pType = pRowIdObj.Row.get_Value(idx2) as string;
                    frmIdentifyDlg.get_Info(pName, pType, pName);
                    frmIdentifyDlg.RefreshInfo();

    //打开图层属性表

    private void frmTable_Load(object sender, EventArgs e)
            {
                ILayer pLayer = m_pMap.get_Layer(0);
                IFeatureLayer pFLayer = pLayer as IFeatureLayer;
                IFeatureClass pFC = pFLayer.FeatureClass;

                IFeatureCursor pFCursor = pFC.Search(null, false);
                IFeature pFeature = pFCursor.NextFeature();

                DataTable pTable = new DataTable();


                DataColumn colName = new DataColumn("名称");
                colName.DataType = System.Type.GetType("System.String");
                pTable.Columns.Add(colName);

                DataColumn colLevel = new DataColumn("级别");
                colName.DataType = System.Type.GetType("System.String");
                pTable.Columns.Add(colLevel);


                DataColumn colA1 = new DataColumn("水量状况");
                colA1.DataType = System.Type.GetType("System.Int16");
                pTable.Columns.Add(colA1);

                DataColumn colA2 = new DataColumn("流速状况");
                colA2.DataType = System.Type.GetType("System.Int16");
                pTable.Columns.Add(colA2);

                DataColumn colA3 = new DataColumn("河岸稳定性");
                colA3.DataType = System.Type.GetType("System.Int16");
                pTable.Columns.Add(colA3);

                DataColumn colA4 = new DataColumn("河床稳定性");
                colA4.DataType = System.Type.GetType("System.Int16");
                pTable.Columns.Add(colA4);

                DataColumn colA5 = new DataColumn("无脊椎动物");
                colA5.DataType = System.Type.GetType("System.Int16");
                pTable.Columns.Add(colA5);

                DataColumn colA6 = new DataColumn("水生植被");
                colA6.DataType = System.Type.GetType("System.Int16");
                pTable.Columns.Add(colA6);

                DataColumn colA7 = new DataColumn("植被带宽度");
                colA7.DataType = System.Type.GetType("System.Int16");
                pTable.Columns.Add(colA7);

                DataColumn colA8 = new DataColumn("生态结构");
                colA8.DataType = System.Type.GetType("System.Int16");
                pTable.Columns.Add(colA8);

                DataColumn colA9 = new DataColumn("河岸连续性");
                colA9.DataType = System.Type.GetType("System.Int16");
                pTable.Columns.Add(colA9);

                DataColumn colA10 = new DataColumn("水环境容量");
                colA10.DataType = System.Type.GetType("System.Int16");
                pTable.Columns.Add(colA10);

                DataColumn colA11 = new DataColumn("河流曲度");
                colA11.DataType = System.Type.GetType("System.Int16");
                pTable.Columns.Add(colA11);

                DataColumn colA12 = new DataColumn("景观建设率");
                colA12.DataType = System.Type.GetType("System.Int16");
                pTable.Columns.Add(colA12);

                DataColumn colA13 = new DataColumn("景观美感度");
                colA13.DataType = System.Type.GetType("System.Int16");
                pTable.Columns.Add(colA13);

                int idxOfName = pFC.FindField("Name");
                int idxOfLevel = pFC.FindField("Type");
                int idxOfFlow = pFC.FindField("水量状况");
                while (pFeature != null)
                {
                    string name = pFeature.get_Value(idxOfName).ToString();
                    string level = pFeature.get_Value(idxOfLevel).ToString();

                    int [] Ax = new int[13];
                    for (int i = idxOfLevel+1; i < pFC.Fields.FieldCount-1; i++)
                    {
                        Ax[i - idxOfLevel] = Convert.ToInt16 (pFeature.get_Value(i));
                    }              

                    DataRow pRow = pTable.NewRow();
                    pRow[0] = name;
                    pRow[1] = level;
                   for (int i = 0; i < 13; i++)
                    {
                        pRow[i + 2] = Ax[i];
                    }           
             
                    pTable.Rows.Add(pRow);

                    pFeature = pFCursor.NextFeature();
                }
                dataGridView1.DataSource = pTable;

                }

    //修改数据表

            private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
            {
                ILayer pLayer = m_pMap.get_Layer(0);
                IFeatureLayer pFLayer = pLayer as IFeatureLayer;
                IFeatureClass pFC = pFLayer.FeatureClass;

                IFeatureCursor pFCursor = pFC.Search(null, false);
                IFeature pFeature = pFCursor.NextFeature();

                pFeature = pFC.GetFeature(e.RowIndex);

                int rowIdx = 0;
                int idxStartPosition = pFC.FindField("Name");

                string pFieldName = pFC.Fields.get_Field(e.ColumnIndex + idxStartPosition).Name;
                object newvalue = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
                bool p = StoreFeatureInfo(pFeature, pFieldName, newvalue);


            }

           
            private bool StoreFeatureInfo(IFeature pFeature, string FieldName, object
        FieldNewValue)   ///修改要素属性值
            {
            
                ///</summary>
                ///<param name="pFeature">所要修改要素</param>
                ///<param name="FieldName">所要修改的字段名</param>
                ///<param name="FieldNewValue">要素新值</param>
                try
                {
                    IFeatureClass pFeatureClass = pFeature.Class as IFeatureClass;
                    IDataset pDataset = pFeatureClass as IDataset;
                    IWorkspace pWorkspace = pDataset.Workspace;
                    IWorkspaceEdit pWorkspaceEdit = pWorkspace as IWorkspaceEdit;
                    //
                    if (pFeature == null) return false;
                    int iField = pFeature.Fields.FindField(FieldName);
                    if (pFeature.Fields.get_Field(iField).Type ==
                    esriFieldType.esriFieldTypeGeometry ||
                    pFeature.Fields.get_Field(iField).Type ==
                   esriFieldType.esriFieldTypeGlobalID ||
                   pFeature.Fields.get_Field(iField).Type ==
                   esriFieldType.esriFieldTypeGUID ||
                   pFeature.Fields.get_Field(iField).Type ==
                   esriFieldType.esriFieldTypeBlob)
                    {
                        MessageBox.Show("该字段不可以修改");
                        return false;
                    }
                    pWorkspaceEdit.StartEditing(false);
                    pWorkspaceEdit.StartEditOperation();
                    pFeature.set_Value(iField, FieldNewValue);
                    pFeature.Store();
                    pWorkspaceEdit.StopEditOperation();
                    pWorkspaceEdit.StopEditing(true);
                    return true;
                }
                catch (System.Exception err)
                {
                    MessageBox.Show(err.Message.ToString());
                    MessageBox.Show("你所输入的值与该字段不匹配");
                    return false;
                }
            }

  • 相关阅读:
    MySQL中的事务
    MySQL中的锁
    MySQL查询更新所有满足条件的数据
    MySQL存储引擎
    MySQL架构
    MySQL中存储json格式数据
    Java反射破坏单例模式
    合唱队(华为OJ)
    Java实现生产者消费者问题
    Spring IOC + AOP 的实现
  • 原文地址:https://www.cnblogs.com/hl3292/p/1851317.html
Copyright © 2011-2022 走看看