在页面加载RadButton Onclientclicked触发

时间:2012-08-08 01:50:12

标签: c# asp.net telerik

当我使用telerik radbutton

<telerik:RadButton ID="RadButton1" runat="server" Text="Stackoverflow" 
Skin="Default" OnClientClicked="SaveIt()" CommandArgument="Edit">
</telerik:RadButton>
刷新页面后,总是SaveIt()函数开始工作。 但; 当我使用按钮时,它仅在用户点击时才有效。

<button type="button" onclick="SaveIt()">Stackoverflow</button>

他们之间有什么区别?

3 个答案:

答案 0 :(得分:5)

这里有几件事。 RadButton和普通HTML按钮之间的区别如下:

使用RadButton时,生成的客户端HTML如下:

<a id="btnStandard" class="RadButton RadButton_Office2010Silver rbSkinnedButton"
  href="javascript:void(0)">
    <input class="rbDecorated" type="submit" name="btnStandard_input" 
      id="btnStandard_input" value="Standard Button" />
    <input id="btnStandard_ClientState" name="btnStandard_ClientState"
      type="hidden" />
</a>

如您所见,生成的类型是“提交” - 这意味着它会将表单提交给服务器。因此,如果您刷新它将尝试再次重新发送该表单。 我无法理解的是 - 你使用过ajax面板。因为如果您使用过ajax面板,则单击按钮会触发ajax发布到服务器,当您刷新页面时,就好像它是第一次而不是回发一样。

正常html不适用于表单提交。它只是用于在客户端触发点击事件。

话虽如此 - OnClientChecked的签名如下:

OnClientChecked="<js function name>" 

注意:您应该只提供没有括号的函数名称,即(和)。

在您的情况下,因为您提供了括号 - 当按钮初始化时,与其关联的客户端功能正在执行,并且您正在运行Javascript代码。

所以这是正确的代码:

<telerik:RadButton runat="server" Text="test" OnClientClicked="func" />

<script>
    function func() {
        alert("clicked");
    }
</script>

希望这能回答你的问题。

答案 1 :(得分:0)

RadButton不具有onClick方法而不是OnClientClicked吗?

答案 2 :(得分:0)

实际上,我也遇到过这种行为。刷新页面确实意味着回发作为发布此索赔的所谓答案的人。为onclientclicked事件指定的js函数在加载页面时触发。我注意到答案只是重新说明了显而易见的原始海报发布的代码是不起作用的代码并宣称它没有解决在加载时触发功能的问题并且只是假设“刷新”相当于回发。

我只是觉得我要解决这个问题并进行有效的分析,并指出如果有人发布了某些内容并且他们的朋友将其作为答案进行宣传,那并不意味着它是正确的。