DOBON.NET DOBON.NETプログラミング掲示板過去ログ

GridViewのチェックボックスの内容が取得できない

環境/言語:[Windows7 ASP.NETC# Visuaul Stuido2010]
分類:[ASP.NET]

やりたいこと
GridViewにチェックボックス列を追加して
サーバー側でチェック情報を取得したい。

実装方法
GridViewにテンプレートにしてチェックボックスを
貼り付けます。
一覧を表示後、チェックボックスを選択して
ボタンを押してもVB側で選択した情報が拾えません。
ボタンを押したときに
Javascriptでcheckedがtrueになったことは確認ずみなのですが。。

下記がソースになります。

================================================================
aspx側
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<h2>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
BorderStyle="None" BorderWidth="1px"
EnableModelValidation="True" GridLines="Vertical">
<AlternatingRowStyle BackColor="Azure" />
<Columns>
<asp:BoundField DataField="TEST" HeaderText="タイトル" DataFormatString="{0:N0}" >
<ItemStyle HorizontalAlign="Right" Width="80px" />
</asp:BoundField>
<asp:TemplateField HeaderText="選択">
<ItemTemplate>
<asp:CheckBox ID="chk" runat="server"/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</h2>
</asp:Content>


================================================================
C#側
protected void Button1_Click(object sender, EventArgs e)
{
CheckBox check = GridView1.Rows[0].FindControl("chk") as CheckBox;
if (check.Checked)
{
// チェックがあるときはここに処理がきてほしい
}
}
自己レスになりますが、
Page_Loadなどが走ったタイミングで
初期化されてる可能性も
あるのでもう少し調べてみたいと思います。
2011/12/22(Thu) 06:17:05 編集(投稿者)

■No29512に返信(OK牧場さんの記事)
ソースを拝見する限りデータソースが関連付けられていないようで
すが、データソースはコードでセットされていますか?もしそうで
あればDataBindメソッドを呼ぶタイミングが関係している可能性が
あります。Button.Clickイベントが発生する前にDataBindメソッド
が呼ばれると、GridView内のコントロールが再作成されコントロー
ルの情報が失われます。
> DataBindメソッドを呼ぶタイミングが関係している可能性が
> あります
返信ありがとうございます。
PostBackがかかって再取得処理が走っていたのが原因でした。
(そもそもPostBackのことをわかっていなかったのですが)
その結果DataBindのタイミングに問題がありました。
おさわがせしました。

解決です、ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板