0

私のコードは次のとおりです。

  <div class="table">
       <asp:UpdatePanel runat="server" ID="labelPanel" UpdateMode="Conditional"  >
           <ContentTemplate>
                 <asp:Label Text="" runat="server" ID="Cost"></asp:Label>
           </ContentTemplate>
       </asp:UpdatePanel>

      <uc1:ucPartsListing ID="ucPartsListing" runat="server" />

  </div>

現在、ユーザー コントロール ucPartsListing 自体に 2 つの更新パネルがあります。いくつかの条件で、ユーザー コントロールから親 aspx に発生するイベントがあります。
その場合、aspx ファイルに存在するラベル値を設定しようとしています。コード ビハインドから手動で update を呼び出しています。それでもうまくいきません。どこが間違っていますか?

 public partial class PartsEnquiry : BaseAuthPage
{
    protected void Page_Load(object sender, EventArgs e)
    {
        ucPartsListing.OnQuotePartsItemSelect += new ascx.ucPartsListing.QuotePartsItemEventHandler(ucPartsListing_OnQuotePartsItemSelect);
    }

    void ucPartsListing_OnQuotePartsItemSelect(string price)
    {
        Cost.Text = price;  //This is not working !

        labelPanel.Update();
    }
4

2 に答える 2

0

「void ucPartsListing_OnQuotePartsItemSelect(string price)」メソッドにブレークポイントを設定し、ヒットするかどうかを確認します。使用しているユーザー コントロールが何であるかはわかりませんが、イベントを発生させるはずのコントロールが何であれ、その AutoPostBack プロパティを True に設定してみてください。

于 2012-08-15T02:34:08.043 に答える
0

あなたは現在の構造では運が悪いと思います。

ユーザー コントロール内の UpdatePanel がブラウザーで起動されると、その内部にあるページの一部が更新されます。実行中の UpdatePanel の外部にあるコントロールを更新することはできません。

外側の UpdatePanelでメソッドを手動で呼び出すUpdate()ことは役に立ちません。クライアントでは、出力を受け取って html ツリーを更新している内側の UpdatePanel の 1 つであるためです。

それを機能させるには、Cost ラベルを更新できる外側の UpdatePanel を何らかの方法でトリガーする必要があります。

于 2012-08-15T11:01:00.840 に答える