예제 #1
0
        protected override void OnLoad(EventArgs e)
        {
            for (int i = 0; i < _reader.GetPropertyCount(); i++)
            {
                string name = _reader.GetPropertyName(i);

                grdResults.Columns.Add(name, name);
            }

            int count = 0;

            try
            {
                this.Cursor = Cursors.WaitCursor;
                while (_reader.ReadNext())
                {
                    count++;
                    object[] values = new object[_reader.GetPropertyCount()];
                    for (int i = 0; i < _reader.GetPropertyCount(); i++)
                    {
                        if (_reader.IsNull(i))
                        {
                            values[i] = null;
                        }
                        else
                        {
                            int pt = _reader.GetPropertyType(i);
                            switch (pt)
                            {
                            case MgPropertyType.Blob:
                                values[i] = "BLOB VALUE";
                                break;

                            case MgPropertyType.Boolean:
                                values[i] = _reader.GetBoolean(i);
                                break;

                            case MgPropertyType.Byte:
                                values[i] = _reader.GetByte(i);
                                break;

                            case MgPropertyType.Clob:
                                values[i] = "CLOB VALUE";
                                break;

                            case MgPropertyType.DateTime:
                                var mdt = _reader.GetDateTime(i);
                                values[i] = mdt.ToString();
                                break;

                            case MgPropertyType.Decimal:
                            case MgPropertyType.Double:
                                values[i] = _reader.GetDouble(i);
                                break;

                            case MgPropertyType.Feature:
                                values[i] = "NESTED FEATURE READER";
                                break;

                            case MgPropertyType.Geometry:
                                MgByteReader agf  = _reader.GetGeometry(i);
                                MgGeometry   geom = _agfRW.Read(agf);
                                values[i] = _wktRW.Write(geom);
                                break;

                            case MgPropertyType.Int16:
                                values[i] = _reader.GetInt16(i);
                                break;

                            case MgPropertyType.Int32:
                                values[i] = _reader.GetInt32(i);
                                break;

                            case MgPropertyType.Int64:
                                values[i] = _reader.GetInt64(i);
                                break;

                            case MgPropertyType.Raster:
                                values[i] = "RASTER IMAGE";
                                break;

                            case MgPropertyType.Single:
                                values[i] = _reader.GetSingle(i);
                                break;

                            case MgPropertyType.String:
                                values[i] = _reader.GetString(i);
                                break;
                            }
                        }
                    }
                    grdResults.Rows.Add(values);
                }
            }
            finally
            {
                this.Cursor = Cursors.Default;
                _reader.Close();
                toolStripStatusLabel1.Text = count + " features returned";
            }
        }