属性编辑.docx
- 文档编号:10896143
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:12
- 大小:17.93KB
属性编辑.docx
《属性编辑.docx》由会员分享,可在线阅读,更多相关《属性编辑.docx(12页珍藏版)》请在冰豆网上搜索。
属性编辑
#region实现动态保存
///
///
///
///
///
privatevoiddataGridView1_CellValueChanged_1(objectsender,DataGridViewCellEventArgse)
{
IsEdit=false;
intRowIndex=dataGridView1.CurrentCellAddress.Y;
intColumeIndex=dataGridView1.CurrentCellAddress.X;
stringcellvalue=dataGridView1.CurrentCell.Value.ToString().Trim();
intObjectID;
ObjectID=Convert.ToInt32(dataGridView1.Rows[RowIndex].Cells[0].Value);
IFeatureLayerpFeatureLayer=pLayerasIFeatureLayer;
IFeatureClasspFeatureClass=pFeatureLayer.FeatureClass;
/*
*找到图层所对应要素类所在的工作空间,开始编辑
*/
IDatasetpDataSet=pFeatureClassasIDataset;
IWorkspacepWorkSpace=pDataSet.Workspace;
IWorkspaceEditpWSEdit=pWorkSpaceasIWorkspaceEdit;
pWSEdit.StartEditing(true);
try
{
pWSEdit.StartEditOperation();
pFeatureClass.GetFeature(ObjectID).set_Value(ColumeIndex,dataGridView1.CurrentCell.Value);
pFeatureClass.GetFeature(ObjectID).Store();
pWSEdit.StopEditOperation();
}
catch
{
try
{pWSEdit.UndoEditOperation();}
catch
{
return;
}
MessageBox.Show("保存失败,该字段的类型为:
"+pFeatureClass.GetFeature(ObjectID).get_Value(ColumeIndex).GetType().ToString().Trim()+"。
请检查后输入","失败",MessageBoxButtons.OK,MessageBoxIcon.Error);
return;
}
pWSEdit.StopEditing(true);
}
privatevoiddataGridView1_CellBeginEdit_1(objectsender,DataGridViewCellCancelEventArgse)
{
//MessageBox.Show("dsadad");
IsEdit=true;
}
privatevoidfrmAttributeTable_FormClosing(objectsender,FormClosingEventArgse)
{
if(IsEdit==true)
dataGridView1.EndEdit();
}
#endregion
privatevoidbutton2_Click(objectsender,EventArgse)
{
if(IsEdit==true)
dataGridView1.EndEdit();
this.Close();
}
http:
//bbs.esrichina-
for(intn=0;n { //pTableCol=newDataColumn(pFeatlyrFields.Field(n).Name); pFieldAlias=pFeatlyrFields.get_Field(n).AliasName; switch(pFieldAlias) { case"OBJECTID": { pTableCol=newDataColumn("阀门序号"); pTable.Columns.Add(pTableCol); //DataGridViewTextBoxColumntextboxColumn1=newDataGridViewTextBoxColumn(); //textboxColumn1.HeaderText="阀门序号"; //dataGridView1.Columns.Add(textboxColumn1); break; } case"编号": { pTableCol=newDataColumn("阀门编号"); pTable.Columns.Add(pTableCol); //DataGridViewTextBoxColumntextboxColumn2=newDataGridViewTextBoxColumn(); //textboxColumn2.HeaderText="阀门编号"; //dataGridView1.Columns.Add(textboxColumn2); break; } case"安装日期": { pTableCol=newDataColumn("阀门安装日期"); pTable.Columns.Add(pTableCol); //DataGridViewTextBoxColumntextboxColumn3=newDataGridViewTextBoxColumn(); //textboxColumn3.HeaderText="阀门安装日期"; //dataGridView1.Columns.Add(textboxColumn3); break; } case"维修日期": { pTableCol=newDataColumn("上次维修日期"); pTable.Columns.Add(pTableCol); //DataGridViewTextBoxColumntextboxColumn4=newDataGridViewTextBoxColumn(); //textboxColumn4.HeaderText="上次维修日期"; //dataGridView1.Columns.Add(textboxColumn4); break; } default: break; } pTableCol=null; } //dataGridView1.Columns.Add(pTable.Columns); IFeatureCursorpFeatCursor; pFeatCursor=pFeatCls.Search(null,false); IFeaturepFeat; pFeat=pFeatCursor.NextFeature(); intk=0; do { DataRowpTableRow; pTableRow=pTable.NewRow(); intj=0; //Fori=0TopFeatlyrFields.FieldCount-1 for(inti=0;i { //MessageBox.Show(pFeatlyrFields.FieldCount.ToString()); pFieldAlias=pFeatlyrFields.get_Field(i).AliasName; //MessageBox.Show(pFieldAlias); switch(pFieldAlias) { case"OBJECTID": { pTableRow[j]=pFeat.get_Value(i); //MessageBox.Show(pTableRow[j].ToString()); j=j+1; break; } case"编号": { pTableRow[j]=pFeat.get_Value(i); //MessageBox.Show(pTableRow[j].ToString()); j=j+1; //MessageBox.Show("ok"); break; } case"安装日期": { pTableRow[j]=pFeat.get_Value(i); //MessageBox.Show(pTableRow[j].ToString()); j=j+1; break; } case"维修日期": { pTableRow[j]=pFeat.get_Value(i); //MessageBox.Show(pTableRow[j].ToString()); j=j+1; //MessageBox.Show("ok"); break; } default: break; } //pTableRow[i]=pFeat.get_Value(i); } AE中要实现选中要素的闪烁,有2个关键点: (1)确定选中的元素是哪一个; (2)闪烁该元素。 实现第一点要用接口IQueryFilter接口,还需要IFeatureCursor接口作为配合;第二点用MapControl控件的一个方法就可以实现,该方法为FlashShape()方法。 下面介绍一个例子。 这个例子将闪烁属性表中选中的要素。 代码如下: //rIndex为选中要素在属性表中的行号 privatevoidqueryGeoObject(IFeatureLayercurFeatureLayer,intrIndex) { if(curMapControl==null||rIndex==-1||curFeatureLayer==null) return; IQueryFilterpQueryFilter=newQueryFilterClass(); stringqueryString=dataGridView1.Columns[0].HeaderText+"="+dataGridView1.Rows[rIndex].Cells[0].Value.ToString(); pQueryFilter.WhereClause=queryString; IFeatureCursorpFeatureCursor=curFeatureLayer.Search(pQueryFilter,false); IFeaturepFindFeature=pFeatureCursor.NextFeature(); while(pFindFeature! =null) { IEnvelopepEnvelop; pEnvelop=pFindFeature.Shape.Envelope; pEnvelop.Expand(3,3,true); curMapControl.Extent=pEnvelop; curMapControl.ActiveView.ScreenDisplay.UpdateWindow(); switch(pFindFeature.Shape.GeometryType) { caseesriGeometryType.esriGeometryPoint: IMarkerSymbolpMarkerSymbol=newSimpleMarkerSymbolClass(); pEnvelop.Width=10; pEnvelop.Height=10; pEnvelop.CenterAt(pFindFeature.ShapeasIPoint); curMapControl.Extent=pEnvelop; curMapControl.ActiveView.ScreenDisplay.UpdateWindow(); curMapControl.FlashShape(pFindFeature.Shape,2,300,pMarkerSymbol); break; caseesriGeometryType.esriGeometryPolyline: ILineSymbolpLineSymbol=newSimpleLineSymbolClass(); curMapControl.FlashShape(pFindFeature.Shape,2,300,pLineSymbol); break; caseesriGeometryType.esriGeometryPolygon: IFillSymbolpFillSymbol=newSimpleFillSymbolClass(); curMapControl.FlashShape(pFindFeature.Shape,2,300,pFillSymbol); break; } pFindFeature=pFeatureCursor.NextFeature(); } } 如果想在双击属性表中某一行时闪烁该元素,只需在DataGridiew的CellDoubleClick事件中这样写: privatevoiddataGridView1_CellDoubleClick(objectsender,DataGridViewCellEventArgse) { rowIndex=e.RowIndex; queryGeoObject(curFeatureLayer,rowIndex); } classCostMatrixAnalyst: NetWorkAnalyst { publicCostMatrixAnalyst() { } publicIDENetworkDatasetGetDENetworkDataset(INetworkDatasetpNetworkDatasetPara) { //QIfromtheNetworkDatasettotheDatasetComponent IDatasetComponentdsComponent; dsComponent=pNetworkDatasetParaasIDatasetComponent; //GettheDataElement returndsComponent.DataElementasIDENetworkDataset; } publicINAContextCreateCostMatrixNAContext(INetworkDatasetpNetworkDatasetPara) { //GettheDataElement IDENetworkDatasetdeNDS=GetDENetworkDataset(pNetworkDatasetPara); INASolverpNaSolver; pNaSolver=newNAODCostMatrixSolverClass(); INAContextEditcontextEdit=pNaSolver.CreateContext(deNDS,pNaSolver.Name)asINAContextEdit; contextEdit.Bind(pNetworkDatasetPara,newGPMessagesClass()); returncontextEditasINAContext; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 属性 编辑