1

私はc#.netを使用しています

ビュー (MultiView) 内にリピーターがあり、各行には「編集」ボタンが含まれています (CommandArgument に格納されているのはタイプ ID です)。

<asp:Button ID="buttonClick" OnCommand="ButtonClick" CommandArgument='<%#Eval("ID")%>' runat="server" Text="Edit"/>

ユーザーが「編集」ボタンをクリックすると、別のビュー (編集ビュー) に移動します。

Eval("ID") が選択されているタイプに応じて、別の UserControl が表示される必要があります。

同じフォーム (編集ビュー) でポストバックが発生すると、動的コントロールの状態が失われることに気付きました。したがって、Page_Load を介して DIV (appViewArea) にアクセス/入力する必要があると思います。

私の Page_Load 内では、ユーザーが編集ビューにアクセスした場合にのみ、DIV に正しい UserControl を入力する必要があります。これが現在 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;
}

私の問題は、if ステートメント (_mutliview) に入ることはなく、viewAppointmentID も格納しないことです。私はウェブを見回しましたが、本当に私を助けるものを見つけることができません. 間違った方法でアクセスしていますか?

助けてくれてありがとう。

ありがとう

クレア

4

2 に答える 2

0

page_load は必要ありませんが、グリッドからの oncommand イベントが必要です。そのイベントでは、commandname および/または commandarguments を確認します。

使用する必要があるようです

  if(!Page.IsPostback())
       // fill grid here

onRowCommand イベントでは、ユーザーコントロールをページに追加できます

于 2009-10-05T10:00:53.930 に答える
0

代わりに、このコードをボタン イベントに追加しました。現在は機能しているように見えるので、ViewState 内に保存する必要があります。

于 2009-10-09T08:03:38.360 に答える