我正在尝试在点击按钮时将用户控件加载到RadToolTip
。单击按钮后,我想加载用户控件,然后调用控件的Initialize
方法,传递我在页面视图状态中存储的对象集合。
以下是RadToolTip
标记:
<telerik:RadToolTip runat="server" ID="_MyToolTip" HideEvent="ManualClose"
Position="Center" Width="500px" Height="400px" Animation="Fade"
ShowEvent="OnClick" ShowDelay="0" RelativeTo="Element"
TargetControlID="_MySelectButton" RenderInPageRoot="True" />
以下是Click
的{{1}}事件处理程序:
MyButton
我想要它,以便在protected void _MySelectButton_Click(object sender, EventArgs e)
{
Control ctrl = Page.LoadControl(@"~/UserControls/MyUserControl.ascx");
var muc = (ctrl as MyUserControlClass);
muc.Initialize(_MyViewStateCollection);
}
触发时,它会创建_MySelectButton_Click
的新实例,然后该事件将传播到MyUserControl
,以便显示工具提示,并且然后用户控制在工具提示中。但是,现在只显示RadToolTip
,其中没有用户控制权。
我在Telerik的网站上找到this post,其中说明:
不会针对工具提升元素触发点击事件
RadToolTip为客户端事件和事件注册事件处理程序 因此他们取消了进一步的点击传播,以便 工具提示仍然可见,因为回发会隐藏它。 这意味着 当ShowEvent设置为OnClick元素,如按钮, CheckBoxes,RadioButtons,LinkButtons可能无法触发其服务器事件 甚至他们的客户端行为可能会改变(特别是对于 RadioButton和CheckBox - 他们不会改变他们的状态,因为 点击被取消)。要避免这种情况,请将ShowEvent设置为OnFocus或 例如OnMouseOver。这同样适用于 RadToolTipManager也是。
如果问题是按钮的RadToolTip
基本上不兼容,因为Click
阻止点击传播,我该如何实现所需的行为? 底线,我希望能够点击按钮,打开工具提示,然后在该工具提示中打开我的用户控件。请帮忙,谢谢!
答案 0 :(得分:1)
我在Telerik的网站上找到this post,其中有人在同一页面上遇到两个RadToolTipManager
个对象的问题。
由于我一直在尝试将RadToolTip
添加到已存在RadToolTipManager
的网页,因此我决定将RadToolTip
更改为其他RadToolTipManager
并明确指定TargetControlID
以引用_MySelectButton
,现在单击按钮会生成工具提示以及预期的用户控件元素。
<telerik:RadToolTipManager runat="server" ID="_MyToolTipManager"
OffsetY="-1" OffsetX="250" HideEvent="ManualClose" Width="500" Height="400"
RelativeTo="Element" RenderInPageRoot="True"
OnAjaxUpdate="MySelectButtonToolTipManagerAjaxUpdate"
ShowEvent="OnClick" Animation="Slide">
<TargetControls>
<telerik:ToolTipTargetControl TargetControlID="_MySelectButton" />
</TargetControls>
</telerik:RadToolTipManager>
以下是RadToolTipManager
的{{1}}事件的关联处理程序:
OnAjaxUpdate
问题解决了!