Xpoint
   [напомнить пароль]

ListView не сохраняет значения объектов при переключении страниц

Метки: [без меток]
2010-12-02 20:31:45 [обр] Top manager(0/2)[досье]

Есть такой код

   <asp:SqlDataSource  ID="sqlds" SelectCommand="SELECT *, codeHTMLIndex1 - 1 AS codeHTMLIndex FROM (SELECT *, CASE @lang WHEN 'en' THEN desc_en WHEN 'kz' THEN desc_kz ELSE desc_ru END [desc], ROW_NUMBER() OVER (ORDER BY code) AS codeHTMLIndex1 FROM mod_ProductTechicalRequirements_codes) AS t ORDER BY code" ConnectionString="<%$ ConnectionStrings:dbConnectionString %>" runat="server">
      <SelectParameters><asp:SessionParameter DbType="String" Name="lang" SessionField="LANG" /></SelectParameters>
   </asp:SqlDataSource>
   <asp:ListView ID="grid" runat="server" DataSourceID="sqlds" ItemPlaceholderID="itemPlaceholder">
      <LayoutTemplate>
         <asp:PlaceHolder ID="itemPlaceholder" runat="server" />
      </LayoutTemplate>
      <ItemTemplate>
         <div style="clear: both">
            <div style="float: left">
               <asp:CheckBox ID="checkbox" runat="server" />
               <asp:HiddenField ID="mod_ProductTechicalRequirements_codes_code" Value='<%# Bind("code") %>' runat="server" />
               <asp:HiddenField ID="rowindex" Value='<%#Eval("codeHTMLIndex")%>' runat="server" />
            </div>
            <div style="float: left; padding-top: 5px; padding-left: 10px; width: 100px;"><%#Eval("code")%></div>
            <div style="padding-top: 5px; padding-left: 10px;"><%#Eval("desc")%></div>
         </div>
      </ItemTemplate>
   </asp:ListView>

   <div style="clear: both">
   <asp:DataPager ID="paginator" runat="server" PagedControlID="grid" 
      PageSize="15">
      <Fields>
         <asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="True" 
            ShowNextPageButton="False" ShowPreviousPageButton="False" />
         <asp:NumericPagerField />
         <asp:NextPreviousPagerField ButtonType="Button" ShowLastPageButton="True" 
            ShowNextPageButton="False" ShowPreviousPageButton="False" />
      </Fields>
   </asp:DataPager>

на странице показываются первые 15 строк с чекбоксами.
Ставлю галочку любые чекбоксы, переключаю страницу, скажем на 7-ю и позвращаюсь обратно на первую.
Проблема и вопрос заключаются в том, что ранее поставленные галочки на чекбоксы не сохраняются, они снова unchecked.

В чем дело? ViewState включен.

спустя 3 часа 29 минут [обр] Василий Свиридов(47/175)[досье]
databind наверное вызывается каждый раз.
спустя 5 часов [обр] Top manager(0/2)[досье]
Василий Свиридов[досье] дума это очевидно, равно как и что конструкция простая и таких вещей возникать не должно.
спустя 2 минуты [обр] Top manager(0/2)[досье]
Мне кажется, это все из-за DataPager, он постоянно перестраивает объект.
Хотя обычный грид таких проблем не вызывает, а ведь у него тоже есть pager
спустя 4 часа 28 минут [обр] Василий Свиридов(47/175)[досье]
хм, наврал, для грида нужно вызывать DataBind() иначе разбивка не срабатывает. Но оно-же и убьёт чекбоксы. Возможно придётся в PreRender пробегаться по ним всем, и сохранять состояние в тот-же ViewState, а после DataBind - восстанавливать.
спустя 46 минут [обр] Top manager(0/2)[досье]
Василий Свиридов[досье]ннн-дааа, а по-проще способа нет?!...
спустя 12 часов [обр] Василий Свиридов(47/175)[досье]
спустя 14 часов [обр] Top manager(0/2)[досье]
Василий Свиридов[досье]спасибо, полезная ссылка и инфа.
Жаль что только 5 записей...
спустя 11 часов [обр] Василий Свиридов(47/175)[досье]
<offtopic>
Top manager[досье]Я вообще переключился с WebForms на ASP.Net MVC, и ни сколько не жалею... MVC намного удобнее...
</offtopic>
спустя 7 часов [обр] Top manager(0/2)[досье]
Василий Свиридов[досье] Где я могу почитать? Что бы тоже передти...
спустя 17 часов [обр] Василий Свиридов(47/175)[досье]
Powered by POEM™ Engine Copyright © 2002-2005