PageLoad内のアクセスCommandEventArgs
-
19-09-2019 - |
質問
私はC#.NETを使用しています。
私は、各行が「編集」ボタン(CommandArgumentに格納されているタイプのIDである)を含むビュー(マルチビュー)内の中継器を有しています。
<asp:Button ID="buttonClick" OnCommand="ButtonClick" CommandArgument='<%#Eval("ID")%>' runat="server" Text="Edit"/>
ユーザーがそれらを別のビュー(編集ビュー)に通って取られ「編集」ボタンをクリックします。
依存性は、どのタイプの評価(「ID」)は、異なるユーザーコントロールが表示されなければならない選択されます。
私は、ポストバックが同じ形式(編集ビュー)で発生した場合、それは動的制御のためにその状態を失うことに気づきました。したがって、私は私がPage_Loadの経由DIV(appViewArea)に移入/にアクセスする必要があると思う。
私をPage_Loadの中で私は、ユーザーが編集ビューにアクセスした場合、それは正しいユーザーコントロールとDIVを移入します。ここに私は現在、私のPage_Loadの中に持っているものです。
if(_multiView1.ActiveViewIndex == 1) // This is the Edit View
{
int typeId = Convert.ToInt32(viewAppointmentID.Value); // viewAppointmentID is a hidden field which is created within the ButtonClick method.
switch (typeId)
{
case 1:
{
var control = Page.LoadControl("~/editBirthAppointment.ascx");
appViewArea.Controls.Add(control);
}
break;
case 2:
{
var control = Page.LoadControl("~/editDeathAppointment.ascx");
appViewArea.Controls.Add(control);
}
break;
}
}
protected void ButtonClick(object sender, CommandEventArgs e)
{
var viewAppointmentID = Convert.ToInt32(e.CommandArgument);
_multiView1.ActiveViewIndex = 1;
}
私の問題は、それがあればstatament(_mutliview)に入ることはありません、それはまたviewAppointmentIDを格納していないということです。私は、Webの周りに見てきましたが、本当に私を助け何かを見つけることができません。私はそれを間違った方法にアクセスしていますか?
任意の助けを事前に感謝します。
おかげ
クレア
解決 2
私の代わりに私のボタンイベントにこのコードを追加しました。それが今ではViewStateの中でそれを格納する必要があります動作するようです。
他のヒント
あなたはコマンド名および/またはcommandargumentsをチェックをPage_Loadが、グリッドから、そのイベントでのオンデマンドイベントを必要としません。
それはあなたが使用する必要があるようです。
if(!Page.IsPostback())
// fill grid here
とonRowCommandイベントで使用すると、ページにユーザーコントロールを追加することができます。