[javascript] 取得asp控制項

沒想到一個 treeview 就搞了我兩三天。
本來是利用下列這段作為與 javascript觸發事件的連結:
tree.Attributes.Add("onClick", "toLatLng('" & tree.SelectedValue & "')")
之後再 javascript 中利用以下程式碼取得值(之前的網誌有提)
  1 var obj = window.event.srcElement;
  2 var treeView = document.getElementById("tree");
  3 
  4 var text = obj.innerText;
  5 var address = obj.title;
但是問題來了,這樣一次只能標記一個位置,那如果要標記多個點要怎麼辦?
也就是我要顯示 selectNode 底下的葉節點(最深層節點)
寫了一個遞迴函式來讀取:
  1     Sub RenderMark(ByVal aNode As TreeNode)
  2         Dim tempNode As TreeNode
  3 
  4         If aNode.ChildNodes.Count = 0 Then
  5             Dim text As String = aNode.Text
  6             Dim address As String = aNode.ToolTip
  7 
  8             '呼叫javascript finction(但不會立刻呼叫, 換別的作法)
  9             'ScriptManager.RegisterClientScriptBlock( _
 10             'Me, _
 11             'GetType(Page), _
 12             '"ToggleScript", _
 13             '"toLatLng('" & address & "','" & text & "' );",
 14             'True)
 15 
 16             gTextString = gTextString & text & ","
 17             gAddressString = gAddressString & address & ","
 18 
 19         Else
 20             For Each tempNode In aNode.ChildNodes
 21                 RenderMark(tempNode)
 22             Next
 23         End If
 24 
 25     End Sub
接著來說明內容:
  8             '呼叫javascript finction(但不會立刻呼叫, 換別的作法)
  9             'ScriptManager.RegisterClientScriptBlock( _
 10             'Me, _
 11             'GetType(Page), _
 12             '"ToggleScript", _
 13             '"toLatLng('" & address & "','" & text & "' );",
 14             'True)
註解掉的這部分,是asp後端呼叫 javascript函式的一個方法。
按照流程好像是正確,但實際跑起來的結果,是不會立刻呼叫 javascript的,要等後端的程式跑完才會呼叫。
結果不論在遞迴中呼叫了幾百次,最後javascript函式也只會執行一次。

所以只好換個方式。
改採取"先在後端把treeview節點資料存成array,再透過javascript來取得array資料,然後在javascript中跑迴圈"

簡單來說,就是後端宣告了一個array,然後要在前端javascript中取得這個array來用。
這邊資料也蠻多的,但是這邊我一直試不出來。
後來想說那乾脆動態宣告label,把值存在label中,再用document.getElementById("label")取。
結果還是會有些問題,因為label會顯示出來(如果設成visible=false就取不到了,因為網頁原始碼就不會有)

最後只好用傳參數,把資料用 ","隔開,之後在 javascript 利用 string.split來取。
結果發現意外的簡單,之前試了一堆方法感覺是做心酸的...


較新的 較舊