/// <summary> /// Returns a GeospatialServices.Runtime.FeatureDataRow based on a RowID /// </summary> /// <param name="RowID"></param> /// <returns>datarow</returns> public GeospatialServices.Runtime.FeatureDataRow GetFeatureDataRow(uint RowID) { using (SqlConnection conn = new SqlConnection(ConnectionString)) { string strSQL = String.Format("SELECT * FROM {0}", this.Table); using (SqlDataAdapter adapter = new SqlDataAdapter(strSQL, conn)) { conn.Open(); System.Data.DataSet ds = new System.Data.DataSet(); adapter.Fill(ds); conn.Close(); if (ds.Tables.Count > 0) { FeatureDataTable fdt = new FeatureDataTable(ds.Tables[0]); foreach (System.Data.DataColumn col in ds.Tables[0].Columns) { if (col.ColumnName != this.GeometryColumn && col.ColumnName != this.GeometryColumn) { fdt.Columns.Add(col.ColumnName, col.DataType, col.Expression); } } if (ds.Tables[0].Rows.Count > (int)RowID) { System.Data.DataRow dr = ds.Tables[0].Rows[(int)RowID]; GeospatialServices.Runtime.FeatureDataRow fdr = fdt.NewRow(); foreach (System.Data.DataColumn col in ds.Tables[0].Columns) { if (col.ColumnName != this.GeometryColumn && col.ColumnName != this.GeometryColumn) { fdr[col.ColumnName] = dr[col]; } } fdr.Geometry = (SqlGeometry)dr[this.GeometryColumn]; return(fdr); } else { return(null); } } else { return(null); } } } }
/// <summary> /// Creates a new FeatureDataSet for the layer with all features that intersect the supplied query feature geometry /// </summary> /// <param name="queryFeature"></param> /// <param name="fds"></param> public void ExecuteSpatialQuery(SqlGeometry queryFeature, GeospatialServices.Runtime.FeatureDataSet fds) { using (SqlConnection conn = new SqlConnection(ConnectionString)) { string strSQL = String.Format("SELECT * FROM {0} WHERE {1}.STIntersects(Geometry::STGeomFromText('{2}',4326)) = 1", this.Table, this.GeometryColumn, queryFeature.ToString()); using (SqlDataAdapter adapter = new SqlDataAdapter(strSQL, conn)) { conn.Open(); System.Data.DataSet ds = new System.Data.DataSet(); adapter.Fill(ds); conn.Close(); if (ds.Tables.Count > 0) { FeatureDataTable fdt = new FeatureDataTable(ds.Tables[0]); foreach (System.Data.DataColumn col in ds.Tables[0].Columns) { if (col.ColumnName != this.GeometryColumn && col.ColumnName != this.GeometryColumn) { fdt.Columns.Add(col.ColumnName, col.DataType, col.Expression); } } foreach (System.Data.DataRow dr in ds.Tables[0].Rows) { GeospatialServices.Runtime.FeatureDataRow fdr = fdt.NewRow(); foreach (System.Data.DataColumn col in ds.Tables[0].Columns) { if (col.ColumnName != this.GeometryColumn && col.ColumnName != this.GeometryColumn) { fdr[col.ColumnName] = dr[col]; } } fdr.Geometry = (SqlGeometry)dr[this.GeometryColumn]; fdt.AddRow(fdr); } fds.Tables.Add(fdt); } } } }
/// <summary> /// Removes the row from the table /// </summary> /// <param name="row">Row to remove</param> public void RemoveRow(FeatureDataRow row) { base.Rows.Remove(row); }
/// <summary> /// Initializes a new instance of the FeatureDataRowChangeEventArgs class. /// </summary> /// <param name="row"></param> /// <param name="action"></param> public FeatureDataRowChangeEventArgs(FeatureDataRow row, DataRowAction action) { this.eventRow = row; this.eventAction = action; }
/// <summary> /// Adds a row to the FeatureDataTable /// </summary> /// <param name="row"></param> public void AddRow(FeatureDataRow row) { base.Rows.Add(row); }