2016-04-01 2 views
0

Я использую VS 2013 VB. У меня есть aspxgridview, который использует objectdatasource. Один из столбцов - это столбец команд, который используется как флажок «Выбрать». Когда пользователь выбирает флажок, а затем переходит на другую страницу, а затем обратно на страницу, где они сделали выбранный флажок, чтобы галочка исчезла. Он не сохраняет выбор. Это сетка предметов инвентаря. Я хочу сделать несколько вариантов, а затем нажать кнопку. При нажатии кнопки я хочу открыть отдельную страницу с элементами, которые были проверены. Это необходимо для создания рабочего порядка.Столбец команды Aspxgridview теряет значение при изменении страницы

Любые идеи о том, как это сделать? Я использую VB, а не C#. Спасибо заранее! Ниже сетка:

<dx:ASPxGridView ID="gvInventory" runat="server" AutoGenerateColumns="False" DataSourceID="InventoryDataSource" EnableTheming="True" Theme="Office2003Olive" EnableRowsCache="False" KeyFieldName="ID_Number"> 
    <Columns> 
      <dx:GridViewDataTextColumn FieldName="ID_Number" Visible="False" VisibleIndex="7"> 
      </dx:GridViewDataTextColumn> 
      <dx:GridViewDataTextColumn Caption="Item" FieldName="Item_Number" VisibleIndex="2" Width="25px"> 
      </dx:GridViewDataTextColumn> 
      <dx:GridViewDataTextColumn Caption="Description" FieldName="Item_Description" VisibleIndex="3"> 
      </dx:GridViewDataTextColumn> 
      <dx:GridViewDataTextColumn Caption="Cost" FieldName="Current_Cost" VisibleIndex="6" Width="15px"> 
       <PropertiesTextEdit DisplayFormatString="{0:c}"> 
       </PropertiesTextEdit> 
      </dx:GridViewDataTextColumn> 
      <dx:GridViewDataTextColumn Caption="WH" FieldName="Warehouse_Location" VisibleIndex="4" Width="15px"> 
      </dx:GridViewDataTextColumn>    
      <dx:GridViewDataDateColumn Caption="Date Rcv'd" FieldName="Last_Receipt_Date" VisibleIndex="1" Width="25px"> 
      </dx:GridViewDataDateColumn>    
      <dx:GridViewDataTextColumn Caption="QTY On Hand" FieldName="Quantity_On_Hand" VisibleIndex="5" Width="20px">     
       <HeaderStyle Wrap="True" /> 
      </dx:GridViewDataTextColumn> 
      <dx:GridViewDataTextColumn FieldName="Current_Month_Issue_Quantity" Visible="False" VisibleIndex="17"> 
      </dx:GridViewDataTextColumn>   

      **<dx:GridViewCommandColumn Caption="Select" ShowInCustomizationForm="True" ShowSelectCheckbox="True" VisibleIndex="0"> 
      </dx:GridViewCommandColumn>** 

Измененное Checkbox на: *

*<dx:GridViewDataTextColumn ShowInCustomizationForm="True" VisibleIndex="0"> 
       <DataItemTemplate> 
       <dx:ASPxCheckBox ID="wed" runat="server" OnInit="cb_Init">        
       </dx:ASPxCheckBox> 
       </DataItemTemplate> 
       </dx:GridViewDataTextColumn>* 

*

Добавлено:

</dx:ASPxGridView>   
     <dx:ASPxHiddenField ID="hf" runat="server" ClientInstanceName="hf"> 
     </dx:ASPxHiddenField> 

В .vb странице добавлено:

Protected Sub cb_Init(ByVal sender As Object, ByVal e As EventArgs) 
     Dim cb As ASPxCheckBox = CType(sender, ASPxCheckBox) 
     Dim container As GridViewDataItemTemplateContainer = CType(cb.NamingContainer, GridViewDataItemTemplateContainer) 

     Dim key As String = String.Format("{0}_{1}", container.Column.Name, container.VisibleIndex) 
     cb.ClientSideEvents.CheckedChanged = String.Format("function(s, e) {{ hf.Set('{0}', s.GetChecked()); }}", key) 
     cb.ClientSideEvents.Init = String.Format("function(s, e) {{ s.SetChecked(hf.Get('{0}')); }}", key) 
    End Sub 

Я нашел это на: https://www.devexpress.com/Support/Center/Question/Details/Q527992

Спасибо, Krob за вашу помощь!

+0

для стартеров, не разрешено AllowEdit = "False" необходимо установить значение true, и вам не нужен UpdateMethod для вашей сетки? Похоже, вы хотите, чтобы «Выбрать» был постоянным, и для этого можно было бы подключить gridview до фонового. – KRob

+0

Я не хочу, чтобы пользователь мог редактировать любые данные, чтобы он был ложным. У источника данных нет бинарного поля. И я не могу добавить поле в базу данных. Я исследовал относительно флажка, теряющего значение при изменении страницы, и нашел, что весь код либо написан на C#, либо они используют gridview, где я использую aspxgridview или их gridview построено динамически. Кажется, я не вижу ничего с моим сценарием. Спасибо за ввод. –

+0

В этом случае будет сохраняться значение Select в переменной сеанса? Вы отслеживаете индекс строки и значение флажка со списком (из KeyValuePair (Integer, Boolean)). Затем сохраните это в сеансе с Session.Add («keyValuePair», CheckboxListValues). Если вы считаете, что это жизнеспособно, я могу привести полный пример – KRob

ответ