0

大量のソースを投稿することなく、これをうまく説明できることを願っています。

オンライン ストアに、ユーザーがツアーの日付を選択できるページがあります。そのページには、いくつかのパネルを含む ConLib があります。1 つ目は次のとおりです。

<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:Panel です。SortedGridView は、ショッピング カート プロバイダーによって提供され、基本的には通常の asp:Grid です。

ユーザーが 3 枚のチケットが欲しいと言ったら、私は

pnl_Grid.Enabled="false" 

日付/時刻を選択した後に変更されないようにします。さまざまな時点で、リセット ボタンをクリックして多くのことを行うことができますが、プロセスをリセットして新しいものを選択したいので、グリッド行のテキスト ボックスで値をゼロに設定し、グリッドを有効にする必要があります。

ブレークポイントを配置してコードをステップ実行しましたが、問題は、ページ レンダリング段階でグリッドが無効な状態でレンダリングされた後に、リセット ボタンのクリック イベント ハンドラーが起動することです。これが true の場合、コード ビハインドで Grid を設定しても、既にレンダリングされているため、ページに有効なグリッドが表示されることはありません。ページを手動で更新すると、実際に有効になっていると表示されるので、正しい問題を抱えていると思います。

ここに答えるのに十分な情報がある場合、私の質問は2つあり
ます。1.私が見ていると思うことは本当である可能性がありますか?コントロールが既にレンダリングされているので、そのポイントは?
2. この問題を回避するにはどうすればよいですか? 可能であれば JQuery は避けたいと思います...元のストア ソフトウェアの記述方法には、意図しない副作用があります。

詳細情報:
カレンダー イベントが選択されているかどうかを示すステータス フラグ _EventSelected があります。リセット ボタンをクリックして false に設定し、PreRender で false かどうかを確認してグリッドを有効にします。繰り返しますが、Reset Button Click イベント ハンドラーまでステータスは変更されず、それはPreRender の 後です。

ご意見ありがとうございます。断言しますが、ASP.NET が完全に理解できる日もあれば、泥のように明らかな日もあります。

4

1 に答える 1

1

私は実用的な解決策を見つけました。ボタンがグリッドを有効にした後にページを強制的に更新するには、更新しないと表示されません。これを btn_Reset_Click ハンドラーに追加しました。

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

とにかくリセット/最初からやり直す状態にあるので、それは悪い解決策ではありません。私の質問を読んでくれてありがとう!うまくいけば、これはいつか他の誰かを助けるでしょう。

于 2013-09-20T19:22:04.417 に答える