2011-02-02 11 views
1

更新パネルがあるマスターページがあります。私が取り組んでいるアプリケーション用のページの1つに、いくつかのasp:textboxがあるカスタムコントロールがあります。そのコントロールにはグリッドビューもあります。コントロールに更新が反映されない

行のasp:linkbuttonをクリックするとOnRowCommandイベントが発生し、その一部がasp:textboxの "Text"プロパティを設定しています。これは機能します。

私の問題は、更新がUIに反映されていないことです。

のUpdatePanel:

<asp:ScriptManager ID="scriptManager" runat="server"> 
    </asp:ScriptManager> 
    <asp:UpdatePanel ID="updPanel" runat="server"> 
     <ContentTemplate> 
       [...more code...] 

のLinkBut​​ton:

<ItemTemplate> 
     <asp:LinkButton ID="LinkButton1" CommandArgument='<%# Eval("ID")%>' CommandName="EDIT" runat="server">Edit</asp:LinkButton>  
</ItemTemplate> 

イベントハンドラ:

protected void RowCommand(object sender, GridViewCommandEventArgs e) 
     { 
      switch (e.CommandName) 
      { 
       case "EDIT": 
        //stuff happens here 
        [ASP:Textbox].Text = [Result of stuff that happened]; 
        ^this is what isn't reflected on the page 
        break; 

私はページのライフサイクルに何かが欠けています知っているが、私は」 m空白を描く。

答えて

2

ちょうどこれに数時間を費やしました。

CommandNameプロパティが "Edit"以外のもの(および他の標準コマンド)に設定されている場合のみ、変更が反映されます。 "EditThis"に設定してみてください。それは私のために働きます。

+1

ああ神。私は数ヶ月前に自分自身を通過しました。 'ListView'には組み込みの機能を実装する' CommandName'が予約されています。残念なことに、MS設計チームは、特定のデザインでアクションを引き起こさない場合でも、コマンド名の1つと同等のコマンド名を設定すると、あらゆる種類の例外をスローするのに適していません。実際にMSのソースコードを踏んで、なぜイベントが発生していないのかを知るまで、私が把握していなかったのはかなりの額のスラッパーでした。正直なところ、私は内部的に何かをしてもなぜ彼らがイベントをブロックするのか分かりません。とても混乱するような。 –

+0

うわー!明日までこれを変更することはできませんが、投稿していただきありがとうございます!それがうまくいくなら、私は戻って来て答えを "受け入れる"でしょう。再度、感謝します! – Chuck

0
protected void RowCommand(object sender, GridViewCommandEventArgs e) 
     { 
      switch (e.CommandName) 
      { 
       case "EDIT": 
        //stuff happens here 
        [ASP:Textbox].Text = [Result of stuff that happened]; 
        ^this is what isn't reflected on the page 
        // ADD THIS 
        updPanel.Update(); 
        break; 
+0

それは、サイコロを試してみました。デバッガでは、正しい値に設定されているテキストボックスが表示されますが、UIは更新されません。 – Chuck

関連する問題