2015-12-31 10 views
5

私はGridViewと次のようなボタンを持っています。それから私は私のデータベースからのデータでgridviewをバインドしています。 GridViewには、IdとClassIndexの2つの非表示フィールドがあります。 チェックボックスをオンにしてボタンをクリックすると、対応するIdとFileNameを取得します。Chechbox.checkedのGridviewからIDを取得するには?

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

同様

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

とボタンボタンの背後にあるコードは

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

ですが

入力文字列が正しい形式ではありませんでしたように私はエラーを取得しています。 エラーとはどのようなものですか?

enter image description here

答えて

2

ルーピングが正しい。

CheckBoxにアクセスしたいときは、FindControlrowに送信してください。つまり、あなたはその行のコントロールを見つけようとしています。

なぜHiddenFieldコントロールの行内にrow.Cell[1].Textでアクセスしていますか?
これも検索してみてください。

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

+0

ありがとう。今私は持っている:)しかし、私はそれを投票に多くの評判を持っていない:( – Ritz

+0

@リッツそれはいいです:) – Bharadwaj

+0

'HiddenField'なしで' ID'にアクセスする方法は、おそらく木を上に移動し、行の 'ID'セルとそこからidを退職しますか? –

関連する問題