2009-02-12 10 views
6

Ich benutze Kontrollkästchen in Gridview .... Ich benutze es in 1. Zelle .... Wenn ich das Kontrollkästchen zur Laufzeit, ich müssen diese Werte erhalten ... aber beim Auswählen oder beim Klicken auf das Kontrollkästchen wird nicht gefunden oder der Wert wird als FALSCH angenommen ... wie im asp.net-Backend und im C# -Code zu schreiben?Wie bekomme ich Werte von CheckBoxen innerhalb einer Gridview, die mit ASP überprüft werden. NET

<asp:TemplateField> 
    <ItemTemplate > 
     <asp:checkbox id="ShowAddress" runat="server" /> 
    </ItemTemplate> 
</asp:TemplateField> 

-Code-behind:

protected void Button1_Click(object sender, EventArgs e) 
    { 
     // Looping through all the rows in the GridView 

     foreach (GridViewRow di in GridView1.Rows) 
     { 
     CheckBox chkBx = (CheckBox)di.FindControl("ShowAddress"); 

      if (chkBx != null && chkBx.Checked) 
      { 
       /// put your code here 
      } 
     } 
    } 

Gibt es eine Implementierung in Skript auf Seite laden zu tun?

Kann jemand helfen?

Antwort

4

Wie füllen Sie Ihr GridView? Wenn Sie dies in Page_Load tun, stellen Sie sicher, dass Sie dies nicht bei Postbacks tun (überprüfen Sie IsPostBack).

Ist Ihre chkBx-Variable null?

Der folgende Code funktioniert:

protected void Button1_Click(object sender, EventArgs e) 
    { 
     foreach (GridViewRow row in GridView1.Rows) 
     { 
      CheckBox chk = row.Cells[0].Controls[0] as CheckBox; 
      if (chk != null && chk.Checked) 
      { 
       // ... 
      } 
     } 
    } 
+0

Kein seine nicht funktioniert ... nicht sein ist nicht Postbackereignis auf Seite Last mit .... Bin gridview, mit 1. Zelle als Kontrollkästchen, wenn ich 3 Kontrollkästchen von 5, dann brauche ich diese angeklickt/checked Checkbox die gleichen Zeile Werte in Textbox .... wie ist es –

+0

@ user3814410 (Sam) hat das gepostet > Ihre Antwort funktioniert, wenn die untere Zeile verwendet wird. Selbst ein Steuerelement nur in der Zelle, Index muss 1 nicht 0 sein: 'CheckBox chk = row.Cells [0] .Controls [1] als CheckBox;' Stimmt es? Soll Ihre Antwort entsprechend bearbeitet werden? – francis

4
StringCollection idCollection = new StringCollection(); 
string strID = string.Empty; 

for (int i = 0; i < GridView1.Rows.Count; i++) 
{ 
    CheckBox chkDelete = (CheckBox) GridView1.Rows.Cells[0].FindControl("chkSelect"); 
    if (chkDelete != null) 
    { 
    if (chkDelete.Checked) 
     { 
      strID = GridView1.Rows.Cells[1].Text; 
     idCollection.Add(strID); 
    } 
    } 
} 

für weitere Details lesen Sie in diesem Link: http://www.itworld2.com/ghowto.aspx?id=69

1
protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
    Loadgridview();// its a correct 
    }//   not Loadgridview() here if you load above error is occur 
} 

überprüfen es

0
int i = 0; 
foreach (GridViewRow row in GridView1.Rows) 
{ 
    CheckBox chk = (CheckBox)GridView_AdminTags.Rows[i].Cells[0].FindControl("chkTag"); 
    if (chk != null) 
     if (chk.Checked) 
     { 
      ////.......; 
     } 
    i++; 
} 
i = 0; 
-1

Jakob Antwort, wenn unter der Linie arbeiten wird eingesetzt. Auch eine Kontrolle nur in der Zelle, braucht Index 1 nicht 0

CheckBox chk = row.Cells[0].Controls[1] as CheckBox; 

Danke Sam

+0

Willkommen bei Stackoverflow und vielen Dank für Ihr Feedback! Ich habe einen Kommentar zu @JakobChristensen geschrieben und die Antwort kann bei Bedarf geändert werden. Sobald Sie einen guten Ruf haben, können Sie jeden Beitrag kommentieren. – francis

Verwandte Themen