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;
            }
        }

转载于:https://www.cnblogs.com/hl3292/archive/2010/10/14/1851317.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值