2011-11-10 74 views
0

我有我的网页上一个UpdatePanel,我想建立一些触发器:UpdatePanel触发器,如何设置__doPostBack的触发事件?

<asp:updatepanel id="updatepanel1" runat="server"> 
    <contenttemplate> 
      <asp:label id="lblfoo" runat="server /> 
    </contenttemplate> 
    <triggers> 
      <asp:asyncpostbacktrigger controlid="CormantRadTabStrip1" eventname="???" /> 
    </triggers> 
</asp:updatepanel> 

和我有一些相关的JavaScript:

function CloseAndSave() { 
    window.__doPostBack(CormantRadTabStrip1); 
} 

在服务器端我已经栏实现IPostBackEventHandler接口。

虽然这种事情似乎没有明确的事件名称?我应该发送什么事件名?

感谢

public class CormantRadTabStrip : RadTabStrip, IPostBackEventHandler 
{ 
    /// <summary> 
    /// This is called when the GlobalSettings dialog window closes. 
    /// </summary> 
    /// <param name="eventArgument">JSON passed to the event representing state of tabs</param> 
    void IPostBackEventHandler.RaisePostBackEvent(string eventArgument) 
    { 
     UpdateTabs(); 
    } 
} 
+0

哪里是'bar'又是什么呢? –

+0

bar是位于页面上的网页控件。在这个特定的实例中,它是继承自RadTabStrip的类 - http://www.telerik.com/help/aspnet-ajax/tabstrip-overview.html 我已将其重命名为CormantRadTabStrip1。 –

+0

它在更新面板中吗? –

回答

1

eventname应该是什么类型的事件您bar(或CormantRadTabStrip1)控制导致回发。有关一些常见(默认)eventname值,请参阅msdn文档。

+0

我使用的控件(最终)来自System.Web.UI.WebControls.DataBoundControl有没有一种方法可以找出默认的eventname值是什么? –

+0

哦,我明白了。你的“事件”是'__doPostBack()'。嗯,这很棘手。我确定你已经试过把它留空以让它使用'DefaultEventAttribute'并尝试自行确定它?此外,是一个错字,或者你尝试传递控制ID作为*字符串*:'__doPostBack('CormantRadTabStrip1');' –

+0

这只是一个马虎的例子,对不起。我已将ClientID写入页面上的var,然后javascript文件引用var的id。是的,我试着把它留空,并没有触发。我做了一些阅读,但所有的例子只是使用'点击'。 :)最后,这只是一个小小的优化..只是认为要弄清楚它应该是比较棘手的。 –

0

您可以添加隐藏按钮并指定的OnClientClick事件处理程序窗口.__ doPostBack(CormantRadTabStrip1);

然后修改AsyncPostBackTrigger具有以下

<triggers> 
    <asp:asyncpostbacktrigger controlid="YouButtonID" eventname="ClientClick" /> 
</triggers>