2011-01-10 21 views
0

Frohes neues Jahr an alle. Ich bin ein Neuling in VB.NET und ASP.NET. Das ist mein Problem:Liste der Checkboxen

Ich erhalte eine Liste der Datensätze aus DB und für jede Zeile muss ich 4 Kontrollkästchen anzeigen. Ich kann für jede Zeile eine Checkbox-Liste verwenden, aber es ist nicht so klar, wie ich die Ergebnisse nach dem Senden verarbeiten kann.

Ich habe ein Objekt und einige Operationen für dieses Objekt verfügbar. Aus der Datenbank extrahiere ich eine Liste von Objekten mit allen Operationen. Für jede Operation möchte ich ein Kontrollkästchen zum Aktivieren oder Deaktivieren der Operation anzeigen. Das Ergebnis ist so etwas wie das:

OBJ1 - url - [] [x] [] 

OBJ2 - url - [] [x] [x] 

Auf url ich eine href zu einer anderen Seite haben die Id aus DB abgerufen erstellt. Um zu erstellen, dass ich diesen Code verwendet habe:

mein Problem ist: wie kann ich alle Kontrollkästchen analysieren?

Könnten Sie mir helfen oder mir einen Link oder andere Ressourcen schicken, um mein Problem zu lösen?

vielen dank! Andrea

Antwort

0

Jetzt funktioniert es einwandfrei. Es ist meine Lösung (ich es hier posten, weil ich ziemlich sicher bin, dass im nächsten Monat habe ich das gleiche Problem haben, werde ....)

<asp:DataGrid ID="GroupList" Runat="server" CssClass="widefat" 
      AutoGenerateColumns="False" 
      BorderColor="#999999" 
      BorderStyle="None" 
      BorderWidth="1px" 
      BackColor="White" 
      CellPadding="3" 
      GridLines="Vertical"> 
     <Columns>   
      <asp:BoundColumn HeaderText="Status" DataField="GroupName" /> 
      <asp:BoundColumn HeaderText="Status" DataField="GroupActive" /> 
      <asp:BoundColumn HeaderText="Status" DataField="GroupID" 
        Visible="false" /> 
      <asp:TemplateColumn HeaderText="Users" 
        ItemStyle-HorizontalAlign="Center"> 
       <ItemTemplate> 
        <asp:HyperLink runat="server" 
        NavigateUrl="User_manager.aspx" > 
        <asp:Image runat="server" 
        ImageUrl="~/images/folders/users.png" 
        Width="24" /></asp:HyperLink> 
       </ItemTemplate> 
      </asp:TemplateColumn> 
      <asp:TemplateColumn HeaderText="View" 
        ItemStyle-HorizontalAlign="Center"> 
       <ItemTemplate> 
        <asp:CheckBox ID="chkView" Runat="server" 
        Checked='<%# Eval("View").ToString().Equals("1")%>' /> 
       </ItemTemplate> 
      </asp:TemplateColumn> 
      <asp:TemplateColumn HeaderText="Upload" 
        ItemStyle-HorizontalAlign="Center"> 
       <ItemTemplate> 
        <asp:CheckBox ID="chkUpload" Runat="server" 
        Checked='<%# Eval("Upload").ToString().Equals("1")%>'/> 
       </ItemTemplate> 
      </asp:TemplateColumn> 
      <asp:TemplateColumn HeaderText="Delete" 
        ItemStyle-HorizontalAlign="Center"> 
       <ItemTemplate> 
        <asp:CheckBox ID="chkDelete" Runat="server" 
        Checked='<%# Eval("Delete").ToString().Equals("1")%>' /> 
       </ItemTemplate> 
      </asp:TemplateColumn> 
      <asp:TemplateColumn HeaderText="Move" 
        ItemStyle-HorizontalAlign="Center"> 
       <ItemTemplate> 
        <asp:CheckBox ID="chkMove" Runat="server" 
        Checked='<%# Eval("Move").ToString().Equals("1")%>' /> 
       </ItemTemplate> 
      </asp:TemplateColumn> 
      <asp:TemplateColumn HeaderText="Rename" 
        ItemStyle-HorizontalAlign="Center"> 
       <ItemTemplate> 
        <asp:CheckBox ID="chkRename" Runat="server" 
        Checked='<%# Eval("Rename").ToString().Equals("1")%>' /> 
       </ItemTemplate> 
      </asp:TemplateColumn> 
      <asp:TemplateColumn HeaderText="Replace" 
        ItemStyle-HorizontalAlign="Center"> 
       <ItemTemplate> 
        <asp:CheckBox ID="chkReplace" Runat="server" 
        Checked='<%# Eval("Replace").ToString().Equals("1")%>' /> 
       </ItemTemplate> 
      </asp:TemplateColumn> 
     </Columns> 
     <AlternatingItemStyle BackColor="#f9f9f9" /> 
     <ItemStyle ForeColor="Black" BackColor="#EEEEEE" BorderStyle="Solid" 
        BorderColor="#dfdfdf" BorderWidth="1px" /> 
     <headerStyle Font-Bold="True" ForeColor="Black" BackColor="#dfdfdf" 
        HorizontalAlign="Center" /> 
    </asp:DataGrid> 

Und das Ergebnis zu analysieren, nachdem der einreichen:

 For intRow = 0 To intRows 

      GridItem = GroupList.Items(intRow)    
      groupID = GridItem.Cells(2).Text().Trim() 

      If (DirectCast(GridItem.FindControl("chkView"), 
        CheckBox).Checked) Then 
       db.insertGroupOperation(repository_selected, 
        groupID, op_view) 
      End If 
      [..] 
     Next 

Vielen Dank für die Hilfe!

bye, Andrea

0

Schauen Sie sich die DataGrid Klasse an - Sie können sie als Databind verwenden und eine Spalte als Checkbox-Spalte formatieren.

Es ist eine sehr schwere Kontrolle (insbesondere die ViewState), so dass Sie etwas leichter mit mehr Kontrolle (und mehr Arbeit zu implementieren) wie eine Repeater ersetzen möchten.

In beiden Fällen können Sie auf die Werte in den verschiedenen Postback-Ereignissen zugreifen.

+0

Ok, das Problem ist, dass ich einige href Link für alle Zeilen zeigen müssen, nicht sicher, dass es mit Datagrid-Klasse –

+0

@Andrea Girardi möglich - Es würde helfen, eine Frage zu beantworten, wenn Sie Geben Sie alle Details und Beschränkungen in der Frage an, anstatt sie zu tropfen. – Oded

+0

@Andrea Girardi - Und Sie können entweder ein "HtmlAnchor" -Steuerelement oder "LinkButton" -Steuerelement verwenden. Jeder wird einen Anker erzeugen. – Oded

0

Wenn Sie diese in einem DB mit jedem Datensatz müssen angezeigt werden, können Sie eine Gridview-Steuerelement verwenden können. Erstellen Sie das Raster mit den Spalten für den Datensatz. Fügen Sie dann dem Steuerelement ein GridTemplateField hinzu, und fügen Sie Ihre Checkboxlist hinzu. Binden Sie Ihre Checkbox-Liste mit einem Datenquellen-Steuerelement. Andernfalls müssen Sie in RowDataBound binden und auch dort die Elemente auswählen (in beiden Fällen). Der Benutzer kann Massenänderungen vornehmen und speichern, und Sie können die Werte über folgende Adresse abrufen:

foreach (GridViewRow row in this.rg.Rows) 
{ 
    if (row.RowType == DataControlRowType.DataRow) 
    { 
     var list = (CheckBoxList)row.Cells[<index>].FindControl("chk"); 
     //Get checked items, save to DB 
    } 

} 
Verwandte Themen