2010-11-15 54 views
2

我正在使用MVC和我加载数据到一个ListView。一切工作正常,这里的观点:分页MVC项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> 

我的问题是在控制器上,因为我需要恢复人复选框加载到ListView中,但只的Request.Form返回那些因分页显示的复选框,我的意思是,如果我使用10个项目的分页,那么Request.Form会得到10个复选框,正如我所说的,我有60个复选框(例如),我需要使用Request.Form或其他东西(也许是一个技巧:)获得60个复选框) 。 这里的控制器:

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 

谢谢。

+0

不要骗自己,你正在使用MVC的思想。你使用的是经典的WebForms。与MVC无关。一旦从视图中移除包含'runat =“server”'的所有内容,您就会更接近MVC。 – 2010-11-15 22:13:39

回答

3

我不建议混合使用MVC的asp.net控件。它们中的很多需要在MVC中不维护的状态。我使用它们时一直有问题。

我建议你使用MVCContrib的网格或jQuery的网格来代替。两者都非常棒,易于使用。我倾向于使用MCVContrib,因为我喜欢它的工作方式,我不需要花哨的客户端处理。

http://mvccontrib.codeplex.com/

+0

mvccontrib的网格绝对是太棒了,但要小心其中的一些代码 - 在我的项目中使用它时,我遇到了严重的性能问题。在做了一些分析之后,我在一些写得不好的MVCContrib代码中浪费了90%的CPU周期。有问题的bug已经修复,我还没有任何其他问题,但这让我有点警惕。只要确保在生产环境中依赖性能分析器之前,它已经通过了性能分析器。 – Basic 2010-11-15 22:16:52

+0

我尝试使用jqGrid(非常有趣),但仍然具有相同的。在提交时,我可以从实际页面上抓取复选框(结果分页)。正如我所说,我需要抓住所有标记为真的复选框。谢谢 – 2010-11-17 15:30:26

+0

听起来像是一些Google研究的时间。这个问题很通用,所以你应该能够找到一些东西。我也需要类似的功能。 :) – rboarman 2010-11-21 18:40:43