【问题标题】:Asp.NET User Control Postback IssueAsp.NET 用户控制回发问题
【发布时间】:2014-01-29 02:17:12
【问题描述】:

我有一个 aspx 页面,上面有一个 Tab 控件、几个按钮和一个用户控件。

<dx:TabPage Text="Worker Information" Name="tabWorker">
    <ContentCollection>
        <dx:ContentControl runat="server" SupportsDisabledAttribute="True">
            <uc:WorkerInfo runat="server" OnWorkerLoaded="On_Worker_Loaded" OnWorkerUnloaded="On_Worker_Unloaded" />
        </dx:ContentControl>
    </ContentCollection>
</dx:TabPage>

用户控件上有 2 个自定义事件

public event EventHandler WorkerLoaded;
public event EventHandler WorkerUnloaded;

我在主 aspx 页面中有事件处理程序

protected void On_Worker_Loaded(object sender, EventArgs e)
{
    btnNext.Enabled = true;
}

protected void On_Worker_Unloaded(object sender, EventArgs e)
{
    btnNext.Enabled = false;
}

On_Worker_Loaded 事件触发没有问题。我可以调试并观察按钮启用。我的问题是当屏幕加载按钮仍然被禁用。在我的 aspx 页面中,我禁用了按钮:

<dx:ASPxButton ID="btnNext" runat="server" Text="Next" Theme="MetropolisBlue" 
                onclick="btnNext_Click" Enabled="false"></dx:ASPxButton>

“下一步”按钮已被禁用。这就是为什么你不能真正看到它。我用黑色轮廓框住了它。当我单击 OK 按钮时,会触发 WorkerLoaded 事件。

唯一的其他禁用是 On_Worker_Unloaded 事件处理程序。我还没有接上。没有其他原因会导致按钮禁用。有什么我缺少的想法吗?

谢谢!

更新

用户控件中有一个更新面板。我不知道这是否会有所不同,但我想我会包括在内。我注意到还有一些奇怪的事情发生了。启用按钮后,我注意到如果我进行回发,按钮将被启用。这会给任何人敲响警钟吗?

【问题讨论】:

    标签: c# asp.net user-controls


    【解决方案1】:

    似乎在设置 Enabled=false 属性之前调用了加载的事件。

    在您的调试器中检查调用事件时 Enabled 属性是否已经为 false。

    另外,是什么触发了 WorkerLoaded 事件?

    【讨论】:

    • aspx 页面在完成任何其他操作之前加载。页面加载时,该按钮已被禁用。当我单击用户控件上的“确定”按钮时,会触发 WorkerLoaded 事件。然后该事件应启用“下一步”按钮。我将编辑我的帖子并添加屏幕截图。
    • 我没有看到任何明显的东西。页面生命周期可能发生了一些意想不到的事情。为了调试,我会尝试更改事件处理程序中的一些其他值,并查看这些其他更改是否在客户端上可见。
    • 我添加了另一个按钮并保持启用状态。我试图更改该按钮上的文本,但它不起作用。我确实注意到,如果我在 WorkerLoaded 事件触发后单击该按钮,则文本将会更改并且 btnNext 将被启用。这和用户控件上的按钮位于 UpdatePanel 内的事实是否是巧合?更新面板是否与问题有关?
    • 是的,我相信更新面板只能更新更新面板里面的服务器控件。由于该按钮位于更新面板之外,因此在您执行完整回发之前不会更改。
    【解决方案2】:

    最后我找到了适合我的解决方案。我将下一个按钮和上一个按钮放在他们自己的更新面板中。在我这样做之后,一切都没有问题。感谢所有的想法和帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-20
      • 1970-01-01
      相关资源
      最近更新 更多