2015-12-31 12 views
5

Mam GridView i przycisk w następujący sposób. Następnie wiążę gridview z danymi z mojej bazy danych. GridView ma dwa pola ukryte dla Id i ClassIndex. po zaznaczeniu pola wyboru i kliknięciu przycisku, chcę uzyskać odpowiedni identyfikator i nazwę pliku.Jak uzyskać identyfikator z Gridview z Chechbox.checked?

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"> 
     <Columns> 
      <asp:TemplateField> 
       <ItemTemplate> 
        <asp:CheckBox ID="check" runat="server" /> 
       </ItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField> 
       <ItemTemplate> 
        <asp:HiddenField ID="hdfId" runat ="server" Value='<%#Eval("Id") %>' /> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField> 
       <ItemTemplate> 
        <asp:HiddenField ID="hdfClssIndex" runat ="server" Value='<%#Eval("ClassIndex") %>' /> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField> 
       <ItemTemplate> 
        <asp:Label ID="lblFileName" runat ="server" Text='<%#Eval("FileName") %>' /> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
    </asp:GridView> 

i Przycisk jak

<asp:Button ID="Button1" runat="server" onclick="Button1_Click" 
     Text="Send Request" /> 

kodu przycisku z tyłu jest

protected void Button1_Click(object sender, EventArgs e) 
{ 
    foreach (GridViewRow row in GridView1.Rows) 
    { 
     var check = row.FindControl("check") as CheckBox; 
     if (check.Checked) 
     { 
     int Id = Convert.ToInt32(row.Cells[1].Text); 
     //some logic follws here 
     } 
    } 
} 

ale otrzymuję błąd jak

ciąg wejściowy nie był w odpowiednim formacie. Jaki jest błąd i jak go rozwiązać?

enter image description here

Odpowiedz

2

Twój pętli poprawne.

Ale zapomniałeś zauważyć jedną rzecz tutaj, kiedy chciałeś uzyskać dostęp do CheckBox zrobiłeś FindControl na row. Co oznacza, że ​​próbujesz znaleźć jakąś kontrolę w tym wierszu.

Dlaczego więc uzyskujesz dostęp do kontroli HiddenField w wierszu z row.Cell[1].Text?
Spróbuj również znaleźć.

int Id = Convert.ToInt32(((HiddenField)row.FindControl("hdfId")).Value);

+0

Dzięki. Teraz mam :) Ale nie mam wiele reputacji, żeby to głosować :( – Ritz

+0

@Ritz jest w porządku :) – Bharadwaj

+0

Wszelkich pomysłów jak uzyskać dostęp do 'ID' bez' HiddenField', prawdopodobnie wchodząc na drzewo i lokalizując komórka "ID" wiersza i jej identyfikator? –

Powiązane problemy