2 Stimmen

MVC-Elemente in auslagerbarer ListView

Ich verwende MVC und ich lade Daten in eine ListView. Alles funktioniert gut, hier ist die Ansicht:

<%  
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>

Mein Problem ist auf dem Controller, weil ich brauche, um alle Checkboxen in ListView geladen wiederherzustellen, aber die Request.Form nur die Checkboxen, die abhängig von der Paging angezeigt werden, ich meine, wenn ich mit Paging von 10 Elemente dann Request.Form bekommt 10 Checkboxen, und wie ich sagte, ich habe 60 Checkboxen (zum Beispiel) und ich brauche die 60 Checkboxen mit Request.Form oder etwas anderes (vielleicht ein Trick :) ). Hier ist der Controller:

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  

Danke.

3voto

rboarman Punkte 8092

Ich schlage nicht vor, asp.net-Steuerelemente mit MVC zu mischen. Viele von ihnen erfordern Zustand, die nicht in MVC gepflegt wird. Ich habe immer Probleme gehabt, wenn ich sie verwenden.

Ich schlage vor, Sie verwenden MVCContrib's Grid oder jQuery's Grid statt. Beide sind großartig und einfach zu bedienen. Ich neige dazu, MCVContrib zu verwenden, weil ich die Art und Weise, wie es funktioniert, mag und ich brauche keine ausgefallene clientseitige Verarbeitung.

http://mvccontrib.codeplex.com/

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X