Редактирование атрибутов в WEB-приложении

0 голосов
спросил 30 Март, 07 от Holger (19,360 баллов) в категории Программные продукты Esri
Я могу открыть в ASP.NET таблицу атрибутов слоя ArcIMS\ArcGIS Server. Позволяет ли ADF сделать редактирование атрибутов, или я могу это сделоть только в присоединённой таблице? 

16 Ответы

0 голосов
ответил 30 Март, 07 от 7600702 (3,780 баллов)
позволяет. в парент и чайлд таблицах. конкретный пример могу сообщит ь студии если скажете, как Вы "открывате" таблицу атрибутов слоя
:)
0 голосов
ответил 02 Апр, 07 от Holger (19,360 баллов)
Предварительно пока так
 
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
......
 
'Populate 'Active Layer' dropdownlist
        '********************************************************
        If Not Page.IsPostBack Then
            Dim func_enum As IEnumerable = Map1.GetFunctionalities()
            For Each gisfunctionality As ESRI.ArcGIS.ADF.Web.DataSources.IGISFunctionality In func_enum
                Dim gisresource As ESRI.ArcGIS.ADF.Web.DataSources.IGISResource = gisfunctionality.Resource
                Dim supported As Boolean = gisresource.SupportsFunctionality(GetType(ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality))
                If supported Then
                    Dim qfunc As ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality
                    qfunc = CType(gisresource.CreateFunctionality(GetType(ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality), Nothing), ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality)
                    Dim lids As String()
                    Dim lnames As String()
                    qfunc.GetQueryableLayers(Nothing, lids, lnames)
                    Dim i As Integer
                    For i = 0 To lnames.Length - 1
                        ddlActiveLayer.Items.Add(New ListItem(lnames(i), lids(i)))
                    Next
                End If
            Next
        End If
        '********************************************************
    End Sub 'Page_Load
 
 
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim i As Integer
        Dim dataset As System.Data.DataSet = New System.Data.DataSet()
        Dim func_enum As IEnumerable = Map1.GetFunctionalities()
        For Each gisfunctionality As ESRI.ArcGIS.ADF.Web.DataSources.IGISFunctionality In func_enum
            Dim gisresource As ESRI.ArcGIS.ADF.Web.DataSources.IGISResource = gisfunctionality.Resource
            Dim supported As Boolean = gisresource.SupportsFunctionality(GetType(ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality))
            If supported Then
                Dim qfunc As ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality = _
                CType(gisresource.CreateFunctionality(GetType(ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality), Nothing), ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality)
                Dim layerIDs As String()
                Dim layerNames As String()
                qfunc.GetQueryableLayers(Nothing, layerIDs, layerNames)
                Dim queryFilter As New ESRI.ArcGIS.ADF.Web.QueryFilter
                'queryFilter.MaxRecords = 50
                For i = 0 To layerIDs.Length - 1
                    If layerNames(i) = ddlActiveLayer.SelectedItem.Text Then
                        dataset.Tables.Add(qfunc.Query(Nothing, layerIDs(i), queryFilter))
                        Exit For
                    End If
                Next
            End If
        Next gisfunctionality
        DataGrid1.DataSource = dataset.Tables(0).DefaultView
        DataGrid1.DataBind()
         fpAttributeTable.Title = "Таблица данных слоя " + ddlActiveLayer.SelectedItem.Text
        fpAttributeTable.Visible = True
    End Sub
0 голосов
ответил 03 Апр, 07 от 7600702 (3,780 баллов)
это правильно. у DataGrid1 имеется опция Enable Editing, нужно ее включить и заполнить Update command
0 голосов
ответил 03 Апр, 07 от Holger (19,360 баллов)

Если можно тут поподробнее, я начинающий.

0 голосов
ответил 03 Апр, 07 от 7600702 (3,780 баллов)
тогда пришлите Ваше приложение + данные в персональной бгд. я Вам верну поправленый код :)
0 голосов
ответил 03 Апр, 07 от Holger (19,360 баллов)

вышеприведённый код отображает данные из любой геобазы, публикуемые ArcIMS :).

0 голосов
ответил 03 Апр, 07 от 7600702 (3,780 баллов)
нет проблемы. спасибо.
0 голосов
ответил 03 Апр, 07 от Holger (19,360 баллов)

Т.е. сказать как передать обновлённые данные из Dataset  в базу Вы можете?

0 голосов
ответил 03 Апр, 07 от 7600702 (3,780 баллов)
можем. и не только это.

     <asp:DetailsView ID="DetailsViewBlock1" runat="server" DataSourceID="SqlDataSourceBlock1" Height="100%" Width="100%" AutoGenerateRows="False">
                                                    <Fields>
                                                        <asp:BoundField DataField="name" HeaderText="Название" SortExpression="name" NullDisplayText="не определено" />
                                                        <asp:CommandField ButtonType="Button" ShowEditButton="True" CancelText="Отмена" EditText="Редактировать" UpdateText="Сохранить" />
                                                    </Fields>
                                                </asp:DetailsView>
                                           <asp:SqlDataSource ID="SqlDataSourceBlock1" runat="server" ConnectionString="<%$ ConnectionStrings:mydataConnectionString %>"
                                               SelectCommand="SELECT name FROM table" UpdateCommand="UPDATE table SET name = @Name">
                                               <UpdateParameters>
                                                   <asp:Parameter Name="Name" />
                                               </UpdateParameters>
                                           </asp:SqlDataSource>
0 голосов
ответил 04 Апр, 07 от Holger (19,360 баллов)

А по поводу ConnectionString в случае  ArcIMS\ArcGIS что надо писать? 

Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...