zaznaczenie pola wyboru grid.net asp.net

Potrzebujesz pomocy, aby to rozwiązać.

Mam gridview i wewnątrz gridview mam pole wyboru i po kliknięciu pola wyboru robię zdarzenie postback i próbuję zaktualizować ten konkretny wiersz tylko w bazie danych.

To jest mój kod checkbox gridview. zobacz OnCheckedChanged.

<asp:TemplateField HeaderText="Sample">
  <ItemTemplate>
     <asp:CheckBox runat="server" 
                   ID="chkSample" 
                   Checked='<%# Bind("Sample") %>' 
                   OnCheckedChanged="UpdateSupplyLed" 
                   AutoPostBack="True">
    </asp:CheckBox> 
  </ItemTemplate>
</asp:TemplateField>

Kod:

protected void UpdateSupplyLed(object sender, EventArgs e)
{
    foreach (GridViewRow di in SamplingGridView.Rows)    
    {        
        CheckBox chkBx = (CheckBox)di.FindControl("chkSample");
        if (chkBx != null && chkBx.Checked)
        {
            //update database logic here.
        }
    }
}

Powyższy kod działa poprawnie, ale dostaje mnie wszystkie pola wyboru, które są sprawdzane irresepective tego, który właśnie sprawdziłem. Nie chcę ich wszystkich.

Jak mogę uzyskać tylko jedną wartość wiersza, która została właśnie sprawdzona. Niektóre wiersze mogły być już sprawdzone, ponieważ status jest prawdziwy dla tych rekordów i nie chcę aktualizować tych rekordów.

Myślę, że mam właściwe pytanie!

Aktualizacja: odpowiedź brzmi:

protected void UpdateSupplyLed(object sender, EventArgs e)
{
    CheckBox chkSampleStatus = sender as CheckBox;        
    bool sample = chkSampleStatus.Checked;            
    GridViewRow row = chkSampleStatus.NamingContainer as GridViewRow;        
    TextBox txtId = row.FindControl("Id") as TextBox;            
    int id = Int32.Parse(txtId.Text);
}

questionAnswers(2)

yourAnswerToTheQuestion