gpt4 book ai didi

c# - __doPostBack 未作为控件的一部分包含在内

转载 作者:太空宇宙 更新时间:2023-11-03 13:38:24 24 4
gpt4 key购买 nike

几个小时以来,我一直在为这个问题绞尽脑汁,这个问题似乎很有趣。我似乎错过了我的控件应该附带的 __doPostBack 事件,但事实并非如此。有些人建议添加:

ClientScript.GetPostBackEventReference(this, string.Empty);

然而,虽然它确实创建了我正在寻找的函数定义,但无论我做什么,页面都会在回发事件上重新加载。正如一些人提到的:

__doPostBack is not defined

这是因为控件 ID 不匹配/未找到。

考虑到 1) 回发功能在没有被强行强制的情况下不会呈现 2) 即使在强行强行进入时,回发也无法找到合适的设置。以下是代码片段:

类定义

[ParseChildren(true)]
[PersistChildren(true)]
[ToolboxData("<{0}:Accordion runat=server></{0}:Accordion>")]
public class Accordion : DataBoundControl, IPostBackEventHandler

事件

public event JQUI_Event ItemClick;

单击处理程序、RaisePostBackEvent 和附加 __doPostBack 的 OnLoad

    public void RaisePostBackEvent(string eventArgument)
{
ItemClick(null, null);
}

protected override void OnLoad(EventArgs e)
{
Page.ClientScript.GetPostBackEventReference(this, string.Empty);
base.OnLoad(e);
}

protected virtual void OnClick(EventArgs e)
{
if (ItemClick != null)
{
ItemClick(null, null);
}
}

最后是生成回发的代码:

        if (ItemClick != null)
{
outPut += "<script> $(function() { $('#" + ClientID + "').find('div').on('click', function() { __doPostBack('" + UniqueID + "', '') }); }); </script>";
}
writer.Write(outPut);

如果您需要更多代码,请告诉我。我不想只是抛出一大段代码,然后告诉人们自己想办法。

编辑:

好的,调用 RaisePostBackEvent(string eventArgument)。但是,我遇到的问题是页面仍然决定重新加载。我已经测试以确保它在正确的控件中调用正确的函数(不仅仅是因为它是回发)。有没有办法将其限制为部分回发而不是完整回发?

最佳答案

See the GetPostBackEventReference documentation ,这表明它返回一个字符串,其中包含 __doPostBack 方法调用。它不是控件的注册方法。然后用您的控件呈现此字符串。当您使用自定义控件时,__doPostBack 不是自动输出。

关于c# - __doPostBack 未作为控件的一部分包含在内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17975628/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com