按钮无法启用另一个控件 - 生命周期问题?

时间:2013-09-20 17:15:13

标签: c# asp.net controls

我希望我能够解释这一点,而不必发布大量的来源。

我在网上商店中有一个页面,可让用户选择游览日期。该页面有一个ConLib,其中包含几个面板。第一个是:

<asp:Panel ID="pnl_Grid" runat="server">
        <cb:SortedGridView ID="VariantGrid" runat="server" 
            AutoGenerateColumns="False" Width="100%"
            SkinID="PagedList" DataKeyNames="OptionList">
            <Columns>
            </Columns>
        </cb:SortedGridView>
    </asp:Panel>

然后另一个asp:面板与其他东西 - 日历,按钮等.SortededGridView由我们的购物车提供商提供,基本上是一个常规的asp:Grid。

当用户说他们想要3张票时我会做

pnl_Grid.Enabled="false" 

选择日期/时间后,不要让它们更改。在不同的点上,他们可以点击一个重置按钮来执行很多操作,但是一个任务是在gridrow文本框中将值设置为零并启用网格,因为他们重置了进程并想要选择新的东西。

我已经完成了断点的代码,似乎我遇到的问题是我的重置按钮单击事件处理程序在生成页面渲染阶段中以禁用状态呈现网格后触发。如果这是真的,那么在后面的代码中设置Grid将永远不会在没有刷新的情况下在页面上显示启用的网格,因为它已经被渲染。如果我手动刷新页面,它确实显示为已启用,因此我认为我遇到了正确的问题。

我的问题是双重的,如果有足够的信息来回答它:
1.我认为我看到的内容是否正确可能 - 页面呈现控件已禁用,然后按钮处理程序尝试启用它,但由于控件已经呈现,此时为时已太晚了?
2.我该如何解决这个问题?如果可能的话,我宁愿避免使用JQuery ......它与原始商店软件的编写方式有一些无意的副作用。

更多信息:
我有一个状态标志_EventSelected,它告诉我是否已选择日历事件。在重置按钮上单击我将其设置为false,在PreRender上我检查它是否为false并启用网格。同样,状态不会更改,直到重置按钮单击事件处理程序和之后 PreRender。

感谢您的投入!我发誓,有些日子ASP.NET对我来说是完全合理的,而其他日子它显然是泥巴。

1 个答案:

答案 0 :(得分:1)

我找到了一个有效的解决方案。为了在按钮启用网格后强制页面刷新(没有刷新时没有显示),我将其添加到btn_Reset_Click处理程序,通过搜索&#34;找到页面重新加载&#34;:

Page.Response.Redirect(Page.Request.Url.ToString(), false);

这不是一个糟糕的解决方案,因为我无论如何处于重置/重启状态。感谢您花时间阅读我的问题!希望有一天这会帮助别人。