我在帶有 C# 的 ASP.NET 上使用 TreeView 控制元件,并且需要使用復選框制作所有節點(根和葉)。然后,我需要這些復選框作為單選按鈕作業,因此當單擊一個復選框時,以前選中的復選框現在未選中,而新的復選框正在被選中。
我在這個問題上的作業是首先將showCheckBoxes="All"屬性添加到 asp:TreeView 然后使用 TreeView1_TreeNodeCheckChanged 事件。但是,此事件不會自動觸發,需要回發頁面才能啟動!因此,我使用了一個javascript函式,使其按照 stackoverflow.com 中類似帖子的建議啟動,但針對不同的問題。
<script type="text/javascript">
function postBackByObject() {
var o = window.event.srcElement;
if (o.tagName == "INPUT" && o.type == "checkbox") {
__doPostBack("", "");
}
}
</script>
protected void Page_Load(object sender, EventArgs e)
{
TreeView1.Attributes.Add("onclick", "postBackByObject()");
}
但是,我仍然不知道如何撰寫TreeNodeCheckChanged函式以使先前選中的復選框變為 unchecked ,并選中新的復選框!由于回郵行動讓我感到困惑。
提前致謝
uj5u.com熱心網友回復:
嗯,你可以做到這個 100% 客戶端。
我們將在頁面加載時:
選擇樹視圖。
然后選擇任何顯示的復選框并添加點擊事件。
在那個點擊事件中?
獲取我們點擊的復選框 - 保存設定。
取消選中所有復選框。
選中/取消選中我們點擊的那個回到它的狀態。
這似乎有效:
<script>
// select all check boxes - add event to that check box
// on page load
$(window).on('load', function () {
tv = $('#TreeView1')
nodes = tv.find('input[type=checkbox]')
nodes.each(function () {
$(this).change(function () { mycheck(this) } )
})
})
function mycheck(e) {
mychecked = e.checked // save current check box
myParent = $(e).closest('[id$=Nodes]') // get current node
clist = myParent.find('input[type=checkbox]') // get all checkc box in node
clist.each(function () {
this.checked = false // uncheck them all
})
e.checked = mychecked // set state of the box we checked or un-checked.
}
</script>
所以,我得到/看到這個:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/511416.html
標籤:C#网复选框树视图回发
上一篇:如何在userclick上使用Ajax從aspx頁面發送資料到C#頁面?
下一篇:如何通過.NETCore6WebApi中的Post啟用檔案上傳作為IFormFile以存盤在SQLVarBinary中-使用AutoMapper
