2016-04-05 19 views
1

Ich habe diese GridviewWie kann ich Checkbox zu GridView hinzufügen?

<asp:GridView ID="gvValues" runat="server" Width="100%" AllowPaging="True" PagerSettings-Mode="NumericFirstLast" OnRowCommand="gvValues_RowCommand" 
AutoGenerateColumns="False" CellPadding="0" PageSize="15" ItemType="Product" CssClass="table-striped table-condensed table table-bordered table-hover" 
    OnRowDataBound="gvValues_RowDataBound" OnPageIndexChanging="gvValues_PageIndexChanging" meta:resourcekey="gvValuesResource1" EmptyDataText="No Products in your Pos"> 
<EmptyDataRowStyle Font-Bold="True" Font-Size="16pt" ForeColor="Red" /> 
     <RowStyle Wrap="true" HorizontalAlign="Center" /> 
     <Columns> 
     <asp:TemplateField HeaderText="#"> 
      <ItemTemplate><%# gvValues.PageSize*gvValues.PageIndex+ Container.DisplayIndex+1 %> 
       <asp:CheckBox ID="chkProduct" runat="server" CssClass="chkProduct"/> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:TemplateField HeaderText="online" meta:resourcekey="Online"> 
     <ItemTemplate > 
       <asp:CheckBox ID="chkProductonline" runat="server" /> 
      </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
    </asp:GridView> 

ich C# als

products = GetProduct();  
    gvValues.DataSource = products; 
    gvValues.DataBind(); 

Jetzt muss ich überprüfen Checkbox chkProductonline je mit Griff aus Produktliste auf das Lesen, wenn product.on 1 Prüfung ist das Kontrollkästchen

Wie kann ich das tun?

+0

Was meinst du mit 'add checkbox'? Ist es nicht schon in der GridView? –

Antwort

1

In Ihrer gvValues_RowDataBound-Methode (im Code dahinter) können Sie das Kontrollkästchen-Steuerelement abrufen und es aus dem aktuellen Datenelement auffüllen. Es ist im Allgemeinen eine gute Idee, den aktuellen Zeilentyp zu überprüfen, um sicherzustellen, dass Sie sich nicht in einer Kopfzeile, Fußzeile usw. befinden, da Sie dies nur für tatsächliche Elementzeilen tun möchten. Es würde ungefähr so ​​aussehen:

private void gvValues_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    // Make sure current row is a data row (not header, footer, etc.) 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     // Get checkbox control 
     var chkProductonline= e.Row.FindControl("chkProductonline") as CheckBox; 

     // Get data item (recommend adding some error checking here to make sure it's really a Product) 
     var product = e.Row.DataItem as Product 

     // Set checkbox checked attribute 
     chkProductonline.Checked = product.on; 
    } 
} 
+0

Vielen Dank, Könnten Sie mir helfen, was, wenn ich das Kontrollkästchen Wert des 'chkProduct' auf' chkProductonline_CheckedChanged' kennen muss –

+0

Ereignisse, die Postbacks wie CheckedChanged auslösen, sind knifflig innerhalb Repeater, Rasteransichten, etc. Wenn alles Sie brauchen ein clientseitiges Ereignis (führen Sie zum Beispiel etwas JavaScript aus), dann ist das einfach genug. Wenn Sie jedoch zurückschreiben müssen, wenn sich ein Kontrollkästchen in einem Repeater ändert, ist das eine andere Geschichte. Ich würde wahrscheinlich damit beginnen, eine Befehlsspalte zu erstellen und einen der Knöpfe zu konfigurieren, um eine Methode im Code aufzurufen, die alles erledigt, was Sie tun müssen, wenn sich das Kontrollkästchen ändert. Verwenden Sie dann CSS und JS, um diese Spalte auszublenden, und klicken Sie auf die Schaltfläche, wenn sich das Kontrollkästchen ändert. – TheRotag

+0

Ich bin Soryy Ich habe dich nicht verstanden 'geschützten void chkProductonline_CheckedChanged (Objekt Absender, EventArgs e) { var chkProductonline = FindControl (" chkProductonline ") als CheckBox; bool ischeck = chkProductonline.Checked; var chkProduct = FindControl ("chkProduct") als CheckBox; Zeichenfolge vali = chkProduct.ClientID; } ' Ich muss wissen, ob die online überprüft oder nicht und der Wert eines anderen Kontrollkästchens –

Verwandte Themen