?? attributequery.cs
字號:
while (i < arFeature.FieldCount)
{
if (bIsStringField == true)
{
if (arFeature.get_FieldType(i) == esriARFieldType.esriARFieldTypeString)
{
cboFields.Items.Add(arFeature.get_FieldName(i));
}
}
else
{
if ((arFeature.get_FieldType(i) == esriARFieldType.esriARFieldTypeDouble) || (arFeature.get_FieldType(i) == esriARFieldType.esriARFieldTypeInteger) || (arFeature.get_FieldType(i) == esriARFieldType.esriARFieldTypeSingle) || (arFeature.get_FieldType(i) == esriARFieldType.esriARFieldTypeSmallInteger) || (arFeature.get_FieldType(i) == esriARFieldType.esriARFieldTypeOID))
{
cboFields.Items.Add(arFeature.get_FieldName(i));
}
}
i = i+ 1;
if(cboFields.Items.Count != 0)
{
cboFields.SelectedIndex=0;
}
};
}
catch
{
MessageBox.Show("An error occurred populating the Field ComboBox.");
}
}
private void PopulateOperators(bool bIsStringField)
{
// Clear any current values from combo
cboOperator.Items.Clear();
if (bIsStringField == true)
{
cboOperator.Items.Insert(0, "=");
cboOperator.Items.Insert(1, "<>");
}
else
{
cboOperator.Items.Insert(0, "=");
cboOperator.Items.Insert(1, "<>");
cboOperator.Items.Insert(2, ">");
cboOperator.Items.Insert(3, ">=");
cboOperator.Items.Insert(4, "<=");
cboOperator.Items.Insert(5, "<");
}
cboOperator.SelectedIndex = 0;
}
private void PopulateInverseOperators()
{
InverseOperator[0].input = "=";
InverseOperator[0].inverse = "<>";
InverseOperator[1].input = "<>";
InverseOperator[1].inverse = "=";
InverseOperator[2].input = ">";
InverseOperator[2].inverse = "<=";
InverseOperator[3].input = ">=";
InverseOperator[3].inverse = "<";
InverseOperator[4].input = "<=";
InverseOperator[4].inverse = ">";
InverseOperator[5].input = "<";
InverseOperator[5].inverse = ">=";
}
private void EnableSearchTools(bool EnabledState)
{
txtValue.Text = "";
optNumber.Enabled = EnabledState;
optString.Enabled = EnabledState;
cboFields.Enabled = EnabledState;
cboOperator.Enabled = EnabledState;
txtValue.Enabled = EnabledState;
cmdQuery.Enabled = EnabledState;
}
private void EnableMapTools(bool EnabledState)
{
optZoomIn.Enabled = EnabledState;
optZoomOut.Enabled = EnabledState;
optPan.Enabled = EnabledState;
cmdFullExtent.Enabled = EnabledState;
}
private void EnableMeetHighlightTools(bool EnabledState)
{
cmdMeetFlash.Enabled = EnabledState;
cmdMeetZoomTo.Enabled = EnabledState;
cmdMeetCenterAt.Enabled = EnabledState;
}
private void EnableFailHighlightTools(bool EnabledState)
{
cmdFailFlash.Enabled = EnabledState;
cmdFailZoomTo.Enabled = EnabledState;
cmdFailCenterAt.Enabled = EnabledState;
}
private void cboLayers_SelectedIndexChanged(object sender, System.EventArgs e)
{
ARLayer arLayer = (ARLayer)m_LayersIndex[cboLayers.SelectedIndex];
//Check if layer can be searched
if (arLayer.Searchable)
{
EnableSearchTools(true);
PopulateFields(optString.Checked);
PopulateOperators(optString.Checked);
}
else
{
MessageBox.Show("The Layer you have selected is not Searchable.");
EnableSearchTools(false);
}
//Clear Grids, Labels and disable display tools
axMSFlexGrid1.Clear();
axMSFlexGrid2.Clear();
lblMeets.Text="";
lblFails.Text="";
EnableMeetHighlightTools(false);
EnableFailHighlightTools(false);
}
private void cmdQuery_Click(object sender, System.EventArgs e)
{
//Set mouse cursor as this can take some time with large datasets
Cursor.Current = Cursors.WaitCursor;
//Check value has been entered in field combo
if (cboFields.Text == "")
{
System.Windows.Forms.MessageBox.Show("You have not selected a field.");
Cursor.Current = Cursors.Default;
return;
}
//Check value has been entered in operator combo
if (cboOperator.Text == "")
{
System.Windows.Forms.MessageBox.Show("You have not selected an operator.");
Cursor.Current = Cursors.Default;
return;
}
//Check value has been entered in value textbox
if (txtValue.Text == "")
{
System.Windows.Forms.MessageBox.Show("You have not entered a query value.");
txtValue.Focus();
Cursor.Current = Cursors.Default;
return;
}
//Get layer to query
ARMap arMap = axReaderControl1.ARPageLayout.FocusARMap;
ARLayer arLayer = (ARLayer)m_LayersIndex[cboLayers.SelectedIndex];
//Build the ARSearchDef
ARSearchDef arSearchDef = new ARSearchDefClass();
//Build WhereClause that meets search criteria
string sWhereClause;
//Remove quotes from WhereClause if search is numeric
if (optNumber.Checked == true)
{
sWhereClause = cboFields.Text + " " + cboOperator.Text + " " + txtValue.Text;
}
else
{
sWhereClause = cboFields.Text + " " + cboOperator.Text + " '" + txtValue.Text + "'";
}
arSearchDef.WhereClause = sWhereClause;
//Get ARFeatureSet that meets the search criteria
m_arFeatureSetMeets = arLayer.QueryARFeatures(arSearchDef);
//Build WhereClause that fails search criteria
//Remove quotes from WhereClause if search is numeric
if (optNumber.Checked == true)
{
sWhereClause = cboFields.Text + " " + InverseOperator[cboOperator.SelectedIndex].inverse.ToString() + " " + txtValue.Text;
}
else
{
sWhereClause = cboFields.Text + " " + InverseOperator[cboOperator.SelectedIndex].inverse.ToString() + " '" + txtValue.Text + "'";
}
arSearchDef.WhereClause = sWhereClause;
//Get ARFeatureSet that fails search criteria
m_arFeatureSetFails = arLayer.QueryARFeatures(arSearchDef);
//Reset mouse cursor
Cursor.Current = Cursors.Default;
//Populate the FlexGrid Controls with the ARFeatureSets
PopulateFlexGrids(axMSFlexGrid1, m_arFeatureSetMeets);
PopulateFlexGrids(axMSFlexGrid2, m_arFeatureSetFails);
//Give the user some feedback regarding the number of features that meet criteria
if (m_arFeatureSetMeets.ARFeatureCount > 0)
{
EnableMeetHighlightTools(true);
lblMeets.Text = "Features MEETING the search criteria: " + m_arFeatureSetMeets.ARFeatureCount.ToString();
}
else
{
EnableMeetHighlightTools(false);
axMSFlexGrid1.Clear();
lblMeets.Text = "Features MEETING the search criteria: 0";
}
if (m_arFeatureSetFails.ARFeatureCount > 0)
{
EnableFailHighlightTools(true);
lblFails.Text = "Features FAILING the search criteria: " + m_arFeatureSetFails.ARFeatureCount.ToString();
}
else
{
EnableFailHighlightTools(false);
axMSFlexGrid2.Clear();
lblMeets.Text = "Features FAILING the search criteria: 0";
}
}
private void PopulateFlexGrids(AxMSFlexGridLib.AxMSFlexGrid pFlexGrid, ARFeatureSet arFeatureSet)
{
//Get first feature in ARFeatureSet
arFeatureSet.Reset();
ARFeature arFeature = arFeatureSet.Next();
//Exit if no features in set
if (arFeature == null)
{
return;
}
//Change cursor while grid populates
Cursor = Cursors.WaitCursor;
//Clear Grid of any existing data
pFlexGrid.Clear();
//Reset the Grid dimensions
pFlexGrid.Rows = arFeatureSet.ARFeatureCount + 2;
pFlexGrid.Cols = arFeature.FieldCount + 1;
int c = 1;
int r = 1;
//Loop through and add field names
while (c < arFeature.FieldCount + 1)
{
pFlexGrid.Row = 0;
pFlexGrid.Col = c;
pFlexGrid.Text = arFeature.get_FieldName(c - 1);
c = c + 1;
}
//Reset Col Counter
c = 1;
//Populate Grid
while (r < arFeatureSet.ARFeatureCount + 1)
{
pFlexGrid.Row = r;
while (c < arFeature.FieldCount + 1)
{
pFlexGrid.Col = c;
pFlexGrid.Text = ARFeatureValueAsString(arFeature, c - 1);
c++;
}
//Reset Column
c = 1;
//Move to next Row
r = r + 1;
//Move to next Feature in the FeatureSet
arFeature = arFeatureSet.Next();
}
//Reset mouse cursor
Cursor = Cursors.Default;
}
private string ARFeatureValueAsString(ARFeature pARFeature, int pFieldNameIndex)
{
// If there is an issue accessing the value the function returns a string of asterisks
// There are many reason Asterisks may be returned...
// The return value cant be cast into a string e.g. a BLOB value
// The return value is stored within a hidden field in the PMF
// The return value is a Geometry Object
try
{
string pARFeatureValueAsString = pARFeature.get_Value(pARFeature.get_FieldName(pFieldNameIndex)).ToString();
return pARFeatureValueAsString;
}
catch
{
string pARFeatureValueAsString = "***";
return pARFeatureValueAsString;
}
}
public static bool IsDecimal(string theValue)
{
//A funticon to mimic the VB.NET VB6 function Is Numeric
try
{
Convert.ToDouble(theValue);
return true;
}
catch
{
return false;
}
}
private void txtValue_TextChanged(object sender, System.EventArgs e)
{
//Prevent user entering no numeric value if querying numeric field
if (optNumber.Checked==true)
{
if (IsDecimal(txtValue.Text) == false)
{
txtValue.Clear();
}
}
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -