- PR -

ASP.netのTreeViewでチェックボックスクリックイベントを取得したい

1
投稿者投稿内容
インスパ
大ベテラン
会議室デビュー日: 2002/08/30
投稿数: 125
投稿日時: 2008-12-09 23:42
ASP.netとc#でTreeViewコントロールにチェックボックスをつけています。
チェックボックスがクリック(on/off)された時のイベントをサーバ側でとりたいのですが、うまく取れていません。

ASPでは以下のようにしています。
<asp:TreeView ID="tree" runat="server" ShowCheckBoxes="All" OnTreeNodeCheckChanged="tree_CheckChanged" ShowLines="True" Height="373px" Width="268px">
</asp:TreeView>

OnTreeNodeCheckChangedがチェックボックス変更のイベントと思っているのですが??
このイベントはチェックボックスのon/offのタイミングでは実行されていません。
ツリーに表示された文字のリンクがクリックされてサーバー側で処理が行われたときには
PAGE_LOADの後にOnTreeNodeCheckChangedイベントが発生しています。

以下が、ブラウザに表示されたときのHTMLですが、チェックボックスには特に何も書かれていないので、これだと確かにon/offしても何も発生しないとわかります。
どのようにすればon/offのイベントが取得できるのかご存知の方、お教え願います。

<td><div style="width:20px;height:1px"></div></td><td><img src="/Hoge/WebResource.axd?d=0JMW_EJaqa0wto000_fE-W4W2IpPBQnLagB0_Zgbw8w1&t=633621099524687500" alt="" /></td><td style="white-space:nowrap;"><input type="checkbox" name="treen1CheckBox" id="treen1CheckBox" title="ツリー1" /><a class="tree_0" href="javascript:__doPostBack('tree','sTop\\\\ツリー1')" onclick="TreeView_SelectNode(tree_Data, this,'treet1');" id="treet1">ツリー1</a></td>
</tr>
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2008-12-10 07:55
TreeViewにクライアントサイドのonclickイベントを追加して独自に実装する必要があるようです。

コード:
<%@ Page Language="C#" %>

<script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            Response.Write("f");
        }
    }
</script>

<script>
    function foo() {
        var o = window.event.srcElement;
        var s  = event.srcElement.id;        
        s = s.replace("TreeView1t", "TreeView1n"); 
        s = s.replace("CheckBox","");     
        var ch = document.getElementById(s);
        if (ch != null && o.tagName == "INPUT" && o.type == "checkbox") {            
            __doPostBack("","");
        }                     
    }
</script>

<html>
<head id="Head1" runat="server">
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:TreeView ID="TreeView1" runat="server" ExpandDepth="1">
                <Nodes>
                    <asp:TreeNode ShowCheckBox="True" Value="New Node1" Text="New Node1">
                        <asp:TreeNode ShowCheckBox="True" Value="New Node2" Text="New Node2"></asp:TreeNode>
                    </asp:TreeNode>
                </Nodes>
            </asp:TreeView>
        </div>
    </form>

    <script type="text/javascript">
        if (document.all) {    
            document.getElementById('TreeView1').onclick = foo;    
        }
    </script>
</body>
</html>





詳細は↓を参照してください。
http://forums.asp.net/p/643832/645130.aspx#645130
_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集
1

スキルアップ/キャリアアップ(JOB@IT)