2016年7月20日 星期三

TreeView 的 CheckBox (4.8)

在使用 TreeView 的時候,很簡單地,大家都知道,
只要將其「ShowCheckBox」的屬性設為「True」,在該節點上,
就會產生「CheckBox」型的節點。

另外發現它也有個「TreeNodeCheckChanged」的事件,
其事件的意義就是一如往常的,只要有「勾選/取消」的動作,就會觸發。
很好,那我們便很自然地去找「AutoPostBack」的屬性…

啊?居然沒有~~那也許是程式自己已經是預設「AutoPostBack=True」了吧。
於是執行程式,可是…
它居然沒有執行「TreeNodeCheckChanged」事件底下的程式???

原來,這就是很多人指出 TreeView 的 CheckBox 半殘的地方。
因為還要另外自己再加入些程式碼(JavaScript)才行。

//要加入這個,才能引發TreeView的OnTreeNodeCheckChanged事件
function doCheck()
{
//設定「o」為產生click的來源元素(物件)
var o = window.event.srcElement;

//下條件判斷:屬於checkbox的物件,才產生postback
if (o.tagName == "INPUT" && o.type == "checkbox")
{
__doPostBack("","");
}
}

並把該「TreeView」物件,加一個「onclick="doCheck()"」的事件。