2010-11-15 4 views
2

J'utilise MVC et je charge des données dans un ListView. Tout fonctionne très bien, voici la vue:Articles MVC sur paged ListView

<% 
Dim varDataSource As New iSAM.EntityiSAMRepository 
ListViewDatos.DataSource = varDataSource.ListarCruceCertificadosPrecancelados 
ListViewDatos.DataBind() 
%> 

<asp:ListView runat="server" ID="ListViewDatos"> 
    <LayoutTemplate> 
     <table id="ListViewDatos" class="tablesorter" style="width:100%"> 
      <thead> 
       <tr> 
        <th style="width:2%"> 
        </th> 
        <th style="width:6%" align="left"> 
         <a href="#" style="text-decoration:none"><font color="black">Póliza</font></a> 
        </th> 
       </tr> 
      </thead> 

      <tbody> 
       <tr id="itemPlaceholder" runat="server" /> 
      </tbody> 

      <tfoot> 
       <tr id="pager" align="center"> 
        <td colspan="7" style="border-right: solid 3px #7f7f7f;"> 
         <asp:Image ID="Image1" ImageUrl="~/Images/first.png" CssClass="first" ToolTip="Inicio" runat="server" /> 
         <asp:Image ID="Image2" ImageUrl="~/Images/prev.png" CssClass="prev" ToolTip="Anterior" runat="server" /> 
         <input type="text" class="pagedisplay" readonly="readonly" style="width:100px; text-align:center" /> 
         <asp:Image ID="Image3" ImageUrl="~/Images/next.png" CssClass="next" ToolTip="Siguiente" runat="server" /> 
         <asp:Image ID="Image4" ImageUrl="~/Images/last.png" CssClass="last" ToolTip="Fin" runat="server" /> 
         <select class="pagesize"> 
          <option selected="selected" value="10">10</option> 
          <option value="20">20</option> 
          <option value="50">50</option> 
          <option value="100">100</option> 
         </select> 
        </td> 
       </tr> 
      </tfoot> 
     </table> 
    </LayoutTemplate> 

    <ItemTemplate> 
     <% 
      Static varCount As Long = 0 
      Dim varID1 As Long = Model(varCount).ID1 
      Dim varID2 As Long = Model(varCount).ID2 
      varCount = varCount + 1 
     %> 

     <tr> 
      <td style="border-width:medium"> 
       <%=Html.CheckBox("chkCancel_" & Val(varID1) & "_" & Val(varID2), False, Nothing)%> 
      </td> 
      <td> 
       <%#Eval("WhatEver")%> 
      </td> 
     </tr> 
    </ItemTemplate> 
</asp:ListView> 

<p> 
    <input type="submit" value="Cancel" id="cmdCancel" onclick="if(!confirm('Are you sure?')) return false;" /> 
</p> 

Mon problème est sur le contrôleur parce que je dois récupérer al Checkboxes chargé dans ListView mais le Request.Form ne retourne les cases à cocher qui sont présentées en fonction de la pagination, je veux dire, Si j'utilise la pagination de 10 objets alors Request.Form obtient 10 cases à cocher, et comme je l'ai dit j'ai 60 cases à cocher (par exemple) et j'ai besoin de 60 cases à l'aide de Request.Form ou autre chose (peut-être un truc :)) . Voici le contrôleur:

Function ListMyData(ByVal varErr As String) As ActionResult 
     Dim arrIDs(,) As String = Nothing 
     Dim varcount As Long = 0 

     For Each varItem In Request.Form 
      If InStr(varItem.ToString, "chkCancel") > 0 Then 
       If Request.Form(varItem) = "true,false" Then 
        ReDim Preserve arrIDs(1, varCount) 
        Dim varCode As String = Mid(varItem, InStr(varItem, "_") + 1) 
        arrIDs(0, varCount) = Mid(varCode, 1, InStr(varCode, "_") - 1) 
        arrIDs(1, varCount) = Mid(varCode, InStr(varCode, "_") + 1) 
        varCount = varCount + 1 
       End If 
      End If 
     Next 

     Return View() 
End Function 

Merci.

+0

Ne vous trompez pas en pensant que vous utilisez MVC. Ce que vous utilisez est WebForms classique. Rien à voir avec MVC. Une fois que vous avez supprimé tout ce qui contient 'runat =" server "', vous vous rapprocherez de MVC. –

Répondre

3

Je ne suggère pas de mélanger les contrôles asp.net avec MVC. Beaucoup d'entre eux nécessitent un état qui n'est pas maintenu dans MVC. J'ai toujours eu des problèmes quand je les utilise.

Je vous suggère d'utiliser la grille de MVCContrib ou la grille de jQuery à la place. Les deux sont géniaux et faciles à utiliser. J'ai tendance à utiliser MCVContrib parce que j'aime la façon dont cela fonctionne et je n'ai pas besoin de traitement côté client.

http://mvccontrib.codeplex.com/

+0

La grille de mvccontrib est absolument fantastique mais attention à l'autre code - quand je l'utilisais dans mon projet, j'avais de sérieux problèmes de performance. Après avoir fait quelques analyses, je gaspillais 90% de mes cycles CPU en code MVCContrib mal écrit. Le bug en question a été corrigé et je n'ai pas eu d'autres problèmes, mais ça m'a fait un peu peur. Assurez-vous simplement de l'avoir analysé avant de vous y fier dans un environnement de production. – Basic

+0

J'ai essayé d'utiliser jqGrid (très intéressant) mais ayant toujours le même. Sur soumettre je peux juste attraper les cases à cocher de la page réelle (les résultats sont paginés). Comme je l'ai dit, je dois attraper toutes les cases marquées comme vraies. Merci –

+0

On dirait que du temps pour certaines recherches Google. Le problème est assez générique et vous devriez pouvoir trouver quelque chose. J'ai besoin de fonctionnalités similaires aussi. :) – rboarman

Questions connexes