VB.netアプリでは、通常のASPコントロールで作成されたいくつかのチェックボックスがあります。<asp:CheckBox ID="cb3" runat="server" Checked="true" />
「すべて選択/なし」機能を実装しようとしていますが、いくつか問題があります。Javascriptは、Internet Explorer(v9)のチェックボックスの状態を変更していません。IEの開発ツールを使用してデバッグを試みましたが、チェックボックスのchecked
プロパティが確実にに設定されていtrue
ます。(また、「チェック済み」に設定してみました。)JSは次のとおりです。
function setCheckboxes( state )
{
var inputs = document.getElementsByTagName("input");
for ( var i in inputs )
{
if ( inputs[i].type == "checkbox" )
{
// this line is definitely executed on the checkboxes
inputs[i].checked = state;
// this doesn't work either
//inputs[i].checked = (state ? "checked" : "");
}
}
}
document.getElementById("cbSelectAll").onclick = function() {
setCheckboxes(true);
return false;
}
document.getElementById("cbSelectNone").onclick = function() {
setCheckboxes(false);
return false;
}
関連する可能性のある2番目の問題は、Firefox(v11)で発生します。上記のJSは正常に機能し、チェックボックスの選択を解除しますが、送信時に初期状態に設定されます。ただし、クリックによる選択と選択解除は通常どおり正常に機能します。これを修正するにはどうすればよいですか?
編集:明確にするために、これは基本的なHTMLだけでなく、特に.netの問題です。チェックボックスのある基本的なページを試しましたが、IEはそれらを適切に(選択解除)します。
更新2:関連する可能性があるため、より多くの情報を含める。いくつかチェックしたところ、チェックボックスをクリックしてもInternet Explorerの状態は変更されませんが、送信すると状態が保存されます。
Telerikグリッドビューを使用してデータをバインドしています。aspxコードは次のとおりです。
<telerik:RadGrid ID="gridContacts" runat="server" Skin="Office2007" GridLines="None" AutoGenerateColumns="False">
<MasterTableView>
<RowIndicatorColumn>
<HeaderStyle Width="20px" />
</RowIndicatorColumn>
<ExpandCollapseColumn>
<HeaderStyle Width="20px" />
</ExpandCollapseColumn>
<Columns>
<telerik:GridBoundColumn DataField="id" DataType="System.String" UniqueName="id" Visible="False">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="name" DataType="System.String" UniqueName="name" HeaderText="Name">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="email" DataType="System.String" UniqueName="email" Visible="False">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="sms" DataType="System.String" UniqueName="sms" Visible="False">
</telerik:GridBoundColumn>
<telerik:GridTemplateColumn DataField="useemail" DataType="System.Boolean" UniqueName="useemail" HeaderText="Email">
<ItemTemplate>
<asp:CheckBox ID="cbEmail" runat="server" Checked='<%# Eval("useemail") %>' />
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn DataField="usesms" DataType="System.Boolean" UniqueName="usesms" HeaderText="SMS">
<ItemTemplate>
<asp:CheckBox ID="cbSMS" runat="server" Checked='<%# Eval("usesms") %>' />
</ItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
</MasterTableView>
<FilterMenu EnableTheming="True" Skin="Office2007">
<CollapseAnimation Duration="200" Type="OutQuint" />
</FilterMenu>
</telerik:RadGrid>
チェックボックスごとに、出力されるHTMLは次のとおりです。
<input name="ctl00$ContentPlaceHolder1$gridContacts$ctl00$ctl04$cbEmail"
class="Office2007 input" id="ctl00_ContentPlaceHolder1_gridContacts_ctl00_ctl04_cbEmail"
type="checkbox" CHECKED="checked" /><label class="Office2007 radfdCheckboxChecked"
for="ctl00_ContentPlaceHolder1_gridContacts_ctl00_ctl04_cbEmail" unselectable="on"> </label>