来自C#控件内部自定义模板的Javascript事件

时间:2013-09-09 14:03:18

标签: c# javascript telerik radtreeview

我有一个RadTreeNode样式,其自定义模板具有内部控件。

自定义模板定义为

class AdminFunctionsPhenoTreeTemplate : ITemplate
    {
        public void InstantiateIn(Control container)
        {

            container.Controls.Add(new LiteralControl("<table class=\"mystyle\"><tr><td>"));
            Label label1 = new Label { ID = "ItemLabel", Text = "Text" };
            label1.DataBinding += label1_DataBinding;
            container.Controls.Add(label1);
            container.Controls.Add(new LiteralControl("</td><td>"));
            // rights
            RadioButtonList rbRights = new RadioButtonList { ID = "rbRights",  RepeatDirection = RepeatDirection.Horizontal };
            rbRights.Items.Add(new ListItem("r/o"));
            rbRights.Items.Add(new ListItem("r/w"));
            rbRights.Items.Add(new ListItem("r/w/meta"));
            rbRights.Items.Add(new ListItem("FORBID"));
            rbRights.SelectedIndex = 0;
            container.Controls.Add(rbRights);
            CheckBox cb = new CheckBox { ID = "grantRights", Text = "Grant" };
            container.Controls.Add(cb);
            container.Controls.Add(new LiteralControl("</td></tr></table>")); // global
        }

        private static void label1_DataBinding(object sender, EventArgs e)
        {
            Label target = (Label)sender;
            RadTreeNode node = (RadTreeNode)target.BindingContainer;
            string nodeText = (string)DataBinder.Eval(node, "Text");
            target.Text = nodeText;
        }

     }
    }

当我创建RadTreeNode时,此模板被分配给节点,类似这样

  rtn = new RadTreeNode(sn.NAME + " [" + sn.SECTION_ID + "]", rtnvalue)
                {
                    NodeTemplate = new AdminFunctionsPhenoTreeTemplate(),
                    ExpandMode = TreeNodeExpandMode.ServerSideCallBack
                };

现在,当用户点击其中一个单选按钮或复选框时,我想触发客户端Javascript事件,因为我需要存储单击的节点。 RadTreeView的标准“OnClientNodeClicked”JS事件可用,但是如果我点击这些控件就不会触发它(如果我只点击节点名称,它就可以工作)。

那么当用户改变模板控件时,我如何触发事件并收集节点ID?

提前致谢

0 个答案:

没有答案