質問

私は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イベントで使用すると、ページにユーザーコントロールを追加することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top