リフレッシュするコントロールがDataBound()
であるかどうかによって異なります。
つまり、DataBind()
メソッド呼び出しを使用してコントロールを強制的にリロードして、同じまたは新しいデータでコントロールを強制的にリロードすることはできますか? ほとんどのGUIコントロールにはDataBind()
メソッドがありますが、コントロールが実際にデータを使用していない場合は役に立ちません!
これは、パネル上のDataBind()を使用すると何も起こらないため、パネルに新しいデータが "リフレッシュ"されない理由です。 GridView全体でdatabind()を使用することは別の話であり、うまくいくはずです。たぶんUPDATEPANELを全体の周りに配置するのでしょうか?あなたが気を付けなければならない場合は、通常の編集や行の他のコマンドは引き続き動作します。
しかし、何ができることはあなたのTemplateField
内部の場所modalpopupextender
で、「トリック」を使用して、サーバーのポストバックを維持し、まだポップアップパネルを発射することができます。
は
<asp:UpdatePanel ID="upADDMAIN" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Button ID="btnADD" runat="server" Text="NEW LOGIN" BackColor="Blue" Font-Bold="True" ForeColor="#FFFFCC" OnClick="btnADD_Click" />
<asp:Button ID="btnDUM" runat="server" style="display:none" />
<div style="height:20px">
</div>
<ajaxToolkit:ModalPopupExtender ID="mpeADD" runat="server"
targetcontrolid="btnDUM"
popupcontrolid="upADD"
backgroundcssclass="modelbackground">
</ajaxToolkit:ModalPopupExtender>
<asp:UpdatePanel ID="upAdd" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Panel ID="pnlADD" runat="server" Width="700px" HorizontalAlign="Center" CssClass="auto-style10" Height="200px">
..
..
<div id="puFTR" class="auto-style17" style="vertical-align: middle">
<asp:Button id="btnOK" runat="server" Text="OK" style="width: 80px" OnClick="btnOK_Click" />
<asp:Button id="btnCAN" runat="server" Text="CANCEL" style="width: 80px" OnClick="btnCAN_Click" CausesValidation="False" />
</div>
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
</ContentTemplate>
</asp:UpdatePanel>
すなわち、ご覧の通り、btnDUM
制御がMPEを動作させるためにダミーであるが、それはstyle="display:none"
タグによって隠されていて、それが実際に使用されていません。
ただし、サーバー側でClick()
メソッドを呼び出して新しい行のデータを更新するため、btnADD
が機能します。少しのjScriptを使ってROWINDEX
をClick()メソッドに渡して、GridView
で動作させる必要があるかもしれません。あなたが調整する必要がありますので、
ところで、手動MPE私の場合、「コントロール」でのクリック()メソッド...私の場合は
protected void btnADD_Click(object sender, EventArgs e)
{
ClearADDform();
mpeADD.Show();
}
protected void ClearADDform()
{
txtLOGIN.Text = string.Empty;
cbISActive.Checked = true;
txtPWD.Text = string.Empty;
ddlAgent.SelectedIndex = -1;
}
は、上記のコード例では、GridViewの外にあります。
ただし、Ajaxポップアップを使用してサーバーサイドの呼び出しを行うことは可能です。
幸運。
あなたのコメントのおかげで、私はそれを試していましたが、私はPage_Loadメソッドでこのコードをunforutnatelyしていましたが、動作しませんでした - コードは実行されましたが、DataGridは再バインドされませんでした。最後に、カスタムコントロール(ポップアップページ)全体を更新パネルに入れ、その後、パネルがポップアップされるたびにページが更新/更新されるという問題を解決しました。 – Frankie
よくやった!この質問のタイトルを更新して、[解決済み]の前に置いてください。 – jadarnel27
@ jadarnel27:いいえ、[解決済み]をタイトルに入れません。 –