Aspxgridview 命令列在页面更改时丢失值

Aspxgridview command column loses value when page changes

我正在使用 VS 2013 VB。我有一个使用 objectdatasource 的 aspxgridview。其中一列是用作名为 "Select" 的复选框的命令列。当用户选择一个复选框然后转到另一个页面然后返回他们选中复选框的页面时,复选标记消失了。它不保留选择。 这是库存项目的网格。我想进行多项选择,然后单击一个按钮。在按钮上单击我想打开一个单独的页面,其中包含已检查的项目。这是创建工单。

关于如何实现这个的任何想法?我使用的是 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>**

将复选框更改为: *

*<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 的帮助!

请看原文post。我展示了我在那里所做的更改。我在以下位置找到了信息: https://www.devexpress.com/Support/Center/Question/Details/Q527992

再次感谢 KRob!