2016-05-26 3 views
0

Я использую VS 2013. Я пытаюсь создать «рабочий заказ». В настоящее время пользователь выбирает элементы из сетки инвентаризации. Затем они нажимают кнопку «Просмотр выбора», и открывается следующая страница с выбранными элементами, находящимися в Aspxgridview. Здесь пользователь должен ввести количество для каждого элемента. Как сохранить изменения?Редактировать клиентский объект Aspxgridview objectdatasource, который находится в памяти

ViewWorkOrder.aspx/Aspxgridview:

<dx:ASPxCallbackPanel runat="server" ID="ASPxCallbackPanelList" ClientInstanceName="CallbackPanelList" ClientSideEvents-EndCallback="OnEndCallback" EnableTheming="False"> 
        <ClientSideEvents EndCallback="OnEndCallback"></ClientSideEvents> 
        <PanelCollection> 
         <dx:PanelContent> 
    <dx:ASPxButton ID="ASPxButtonRequestItems" runat="server" EnableTheming="True" Text="Request Items" Theme="Office2003Olive" > 
    </dx:ASPxButton> 

    <dx:ASPxGridView ID="GridViewWorkOrder" ClientInstanceName="GridViewWorkOrder" runat="server" AutoGenerateColumns="False" DataSourceID="InventoryDataSource" EnableTheming="True" Theme="Office2003Olive" KeyFieldName="Item_ID"> 

     <Columns> 
      <dx:GridViewDataTextColumn FieldName="Item_ID" VisibleIndex="7" Visible="False" Width="0px"> 
       <Settings AllowAutoFilter="False" AllowGroup="False" AllowSort="False" /> 
      </dx:GridViewDataTextColumn> 
      <dx:GridViewDataTextColumn FieldName="Order_ID" VisibleIndex="8" Visible="False"> 
      </dx:GridViewDataTextColumn> 
      <dx:GridViewDataTextColumn FieldName="User_ID" VisibleIndex="9" Visible="False"> 
      </dx:GridViewDataTextColumn> 
      <dx:GridViewDataDateColumn FieldName="Date_Of_Order" VisibleIndex="1" Caption="Date" ReadOnly="True"> 
      </dx:GridViewDataDateColumn> 
      <dx:GridViewDataTextColumn FieldName="Warehouse" VisibleIndex="6" Caption="WH" ReadOnly="True"> 
      </dx:GridViewDataTextColumn> 
      <dx:GridViewDataTextColumn FieldName="Department_Selected" VisibleIndex="10" Visible="False"> 
      </dx:GridViewDataTextColumn> 
      <dx:GridViewDataTextColumn FieldName="Equipment_Selected" VisibleIndex="11" Visible="False"> 
      </dx:GridViewDataTextColumn> 
      <dx:GridViewDataTextColumn FieldName="Item_Selected" VisibleIndex="4" Caption="Item#" ReadOnly="True"> 
      </dx:GridViewDataTextColumn> 
      <dx:GridViewDataTextColumn FieldName="Quantity_Of_Order" VisibleIndex="2" Caption="Enter QTY" Width="5px" > 
       <FilterCellStyle Wrap="True"> 
       </FilterCellStyle> 
       <HeaderStyle Wrap="True" /> 
       <CellStyle BackColor="#CCFF99"> 
       </CellStyle> 

      </dx:GridViewDataTextColumn> 
      <dx:GridViewDataTextColumn FieldName="Cost_Of_Item" VisibleIndex="3" Caption="Cost" ReadOnly="True"> 
       <PropertiesTextEdit DisplayFormatString="{0:c}"> 
       </PropertiesTextEdit> 
      </dx:GridViewDataTextColumn> 
      <dx:GridViewDataTextColumn Caption="Item" FieldName="Item_Description" ShowInCustomizationForm="True" VisibleIndex="5" ReadOnly="True"> 
      </dx:GridViewDataTextColumn> 
     </Columns>   

     <SettingsBehavior AllowFocusedRow="True" /> 
     <SettingsEditing Mode="Batch"> 
     </SettingsEditing> 
     <Settings ShowFooter="True" /> 
     <SettingsDataSecurity AllowDelete="False" AllowEdit="True" AllowInsert="False" /> 
    </dx:ASPxGridView>  


    <asp:ObjectDataSource ID="InventoryDataSource" runat="server" SelectMethod="GetCheckBoxInventoryItem" TypeName="GetGridData" > 
     <SelectParameters> 
      <asp:Parameter Name="User_ID" Type="Int64" /> 
     </SelectParameters> 
    </asp:ObjectDataSource> 

       </dx:PanelContent> 
       </PanelCollection>   
      </dx:ASPxCallbackPanel> 

Там нет коды за исключением события загрузки страницы, которая не имеет ничего общего с сеткой в ​​этой точке.

Не существует установки updatemethod. Вот почему я получаю ошибку. (См рис, это самый верхний рис.) Вот где мне нужна помощь ... Вот код, который заполнит ObjectDataSource:

Imports Microsoft.VisualBasic 
Imports System.Data 
Imports System.IO 
Imports System.Data.SqlClient 
Imports System.Web 
Imports System.Web.HttpContext 
Imports System.Drawing 
Imports System.Web.HttpApplication 

Public Module GetGridData 

    Dim _FilteredInventoryList As New List(Of Inventory) 


    Public Function GetCheckBoxInventoryItem(User_ID As Long) As List(Of OrderItem) 

     Dim ItemList As Object = Split(mUser.SelectedInventoryCheckBox, "|") 
     Dim _OrderItems As New List(Of OrderItem) 
     _OrderItems.Clear() 
     For Each r As String In ItemList 
      Dim SelectedItem As String = Trim(r) 
      _FilteredInventoryList = mInventorys.FindAll(Function(x) Trim(x.ID_Number) = SelectedItem) 
      Dim _OrderItem As OrderItem 
      For Each p In _FilteredInventoryList 
       _OrderItem = New OrderItem 
       With _OrderItem 
        .Item_ID = p.ID_Number 
        .Item_Selected = p.Item_Number 
        .Item_Description = p.Item_Description 
        .Cost_Of_Item = p.Current_Cost 
        .Quantity_Of_Order = Nothing 
        .Date_Of_Order = Now 
        .Warehouse = p.Warehouse_Location 

       End With 
       _OrderItems.Add(_OrderItem) 
      Next 
     Next 
     GetCheckBoxInventoryItem = _OrderItems 
    End Function 

мне не нужно обновлять реальную базу данных. Я просто хочу сохранить его, а затем нажмите кнопку «Запросить элементы», и он отправит по электронной почте заказ на склад.

Заранее благодарен!

Snapshots

+0

Может кто-нибудь помочь с этим? Благодаря! –

ответ

0

Я не знаком с VB. Поэтому я постараюсь изо всех сил.

Первое:

- Вам нужно создать метод Update в GetGridData класс;

Public Function UpdateWorkOrder(pUser_id as long, pQuantity_Of_Order as decimal) 
{ 
    /* UPDATE on database WorkOrder code */ 
} 


Второе:

- Перейти на осины: ObjectDataSource ID = "InventoryDataSource" и установить UpdateMethod как метод созданного выше;

<asp:ObjectDataSource 
    ID="InventoryDataSource" runat="server" 
    TypeName="GetGridData" 
    SelectMethod="GetCheckBoxInventoryItem" 
    UpdateMethod="UpdateWorkOrder"> 
    <SelectParameters> 
     <asp:Parameter Name="User_ID" Type="Int64" /> 
    </SelectParameters> 
    <UpdateParameters> 
     <asp:Parameter Name="User_ID" Type="Int64" /> 
     <asp:Parameter Name="Quantity_Of_Order" Type="Decimal" /> 
    </UpdateParameters> 
</asp:ObjectDataSource> 


Если сетка уже есть кнопка обновления на колонке, в которой пользователь редактирует, вам не нужно делать что-нибудь еще