2009-02-12 8 views
6

Używam checkbox w gridview .... Używam go w 1. komórka .... Kiedy zaznaczam pole wyboru w czasie wykonywania, I trzeba uzyskać te wartości ... ale przy zaznaczaniu lub po kliknięciu, aby zaznaczyć, to nie jest znalezienie lub wartość przyjmuje jako FALSE ... jak pisać w asp.net backend i kod C#?Jak uzyskać wartości CheckBoxes wewnątrz gridview, które są sprawdzane przy użyciu asp .net

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

Code-tył:

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

Czy istnieje implementacja do zrobienia w skrypcie na stronie obciążenia?

Czy ktoś może pomóc?

Odpowiedz

4

Jak zapełnić swój GridView? Jeśli robisz to w Page_Load, upewnij się, że nie robisz tego na postbackach (sprawdź IsPostBack).

Czy Twoja zmienna chkBx jest pusta?

Poniższy kod działa:

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

Nie jej nie działa ... nie jestem nie używając zdarzenie ogłaszania zwrotnego na stronie obciążenia .... Am posiadające gridview, z 1-szą komórką jako pole wyboru, jeśli kliknę 3 pole wyboru z 5, to potrzebuję tych klikniętych/zaznaczonych pól wyboru tego samego rzędu wartości w polu tekstowym .... jak to jest –

+0

@ user3814410 (Sam) opublikował to > twoja odpowiedź zadziała, jeśli zostanie użyta poniższa linia. Nawet jedna kontrolka tylko w komórce, indeks musi wynosić 1, a nie 0: 'CheckBox chk = row.Cells [0] .Controls [1] as CheckBox;' Czy to prawda? Czy odpowiedź powinna zostać odpowiednio zmieniona? – 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); 
    } 
    } 
} 

więcej szczegółów sprawdź ten 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 
} 

sprawdzić to

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 Odpowiedź będzie działać, jeśli poniżej linii Jest używane. Nawet jedna kontrola tylko w komórce, indeks musi być 1 nie 0

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

Dziękuję Sam

+0

Witamy w Stackoverflow i dziękujemy za Twoją opinię! Wysłałem komentarz do @JakobChristensen na ten temat, a odpowiedź można edytować w razie potrzeby. Gdy uzyskasz jakąś reputację, będziesz mógł komentować każdy post. – francis

Powiązane problemy