我有一个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?
提前致谢