我有更新面板(網絡表單)內的gridview。網格視圖有一個標題複選框,以便當您單擊標題複選框,它會檢查它下面的所有項目的複選框,就像這樣:標題複選框檢查gridview行,但接口顯示,否則
<asp:TemplateField>
<HeaderTemplate>
<asp:CheckBox ID="HeaderLevelCheckBox" runat="server"
onclick="toggleSelection(this);" ToolTip="Select/Deselect all rows?" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkSelector" runat="server" ToolTip="Select row?" />
</ItemTemplate>
</asp:TemplateField>
注意函數調用onclick="toggleSelection(this);"
這看起來是這樣的:
function toggleSelection(source) {
$("#MainContent_gvCG input[id*='chkSelector']").each(function (index) {
$(this).attr('checked', source.checked);
if (source.checked)
$(this).css({ backgroundColor: "yellow" });
else
$(this).css({ backgroundColor: "" });
});
}
這是在腳本標記中的document.ready之後聲明的。當我最初加載頁面並單擊headercheckbox時,gridview中的所有行也被選中(很好...)。如果我取消選中所有行都未選中(很棒的作品)。當我再次點擊它時,用戶界面不會改變(所有項目不會像他們應該檢查)。
我很好奇,並在檢查太是正確的標記,當我點擊的標頭,檢查,真的,我得到的是被檢查行項目:
<input id="MainContent_gvCG_chkSelector_5" type="checkbox" name="ctl00$MainContent$gvCG$ctl08$chkSelector" style="background-color: rgb(255, 255, 0);" checked="checked">
當我取消了頭它響應正確,象這樣:
<input id="MainContent_gvCG_chkSelector_5" type="checkbox" name="ctl00$MainContent$gvCG$ctl08$chkSelector" style="">
我的問題是,用戶界面不會改變,這意味着該複選框不顯示爲被選中,即使標記表明其爲CH ecked。這是由於在一個更新面板內?
我能做些什麼來解決這個問題?
嘗試使用jQuery ** prop **而不是** attr **,它接受bool值而不是attr/removeAttr checked –
@Iervin是工作'$(this).prop('checked',source.checked); ' – Emre