今、ItemTemplates の MSDN を見ましたが、ID でアクセスする方法がわかりませんでした。
ここにリンクがありますhttp://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.templatefield.itemtemplate.aspx
コードビハインドまたはサーバー スクリプトで他のコントロールにアクセスするのと同じように簡単だと思っていましたが、うまくいきません。ID で参照しようとすると、「現在のコンテキストには存在しません」というエラーが表示され続けます。
私がやろうとしているのは、ヘッダー checbox の checked プロパティにアクセスし、それを使用して ItemTemplate のすべてのチェックボックスを選択または選択解除することです。また、後でコード内で他の用途に使用するために選択するかどうかも必要になります。
私のプロジェクトで使用しているグリッドビューのコードは次のとおりです。
<asp:GridView ID="ApplicationsGridView" runat="server"
AutoGenerateColumns="True"
visible="true"
Font-Size="Smaller"
CellPadding="5"
Width="1200px"
BorderStyle="Solid"
BorderColor="Black"
OnDataBinding="ApplicationsGridView_DataBinding">
<%-- Add the checkboxes declaratively --%>
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:CheckBox runat="server" ID="checkall" Checked="true" OnCheckedChanged="checkall_CheckedChanged" />
<script runat="server">
protected void checkall_CheckedChanged(object sender, EventArgs e)
{
if(checkall.checked)
{
foreach (GridViewRow row in ApplicationsGridView.Rows { }
}
}
</script>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox runat="server" ID="checkboxes" Checked="true" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<AlternatingRowStyle BackColor="#d2d2f2" />
<HeaderStyle Font-Bold="true" BackColor="#052a9f" ForeColor="#eeeeff" Font-Size="Medium"/>
</asp:GridView>
もともと、コードビハインドで ID にアクセスしようとしていました。しかし、サーバー スクリプトを試しても、まだ見つかりません。ID を使用しない場合、チェックボックスにアクセスするにはどうすればよいですか?
編集:これは機能します=)
protected void checkall_CheckedChanged(object sender, EventArgs e)
{
//get whether its checked or not.
CheckBox theCheckBox = sender as CheckBox;
//check them all if checked. Uncheck them all when unchecked.
if (theCheckBox.Checked)
{
foreach (GridViewRow row in ApplicationsGridView.Rows)
{
CheckBox cb = row.FindControl("checkboxes") as CheckBox;
cb.Checked = true;
}
}
else if (!(theCheckBox.Checked))
{
foreach (GridViewRow row in ApplicationsGridView.Rows)
{
CheckBox cb = row.FindControl("checkboxes") as CheckBox;
cb.Checked = false;
}
}
}