2011-05-31 4 views
0

Howdy、 これは既知の問題であるかどうかわかりませんが、編集ボタンを1回クリックすると、サーバーはリストビューをリロードします。ボタンをもう一度押すと、EditTemplateが表示され、リストビューを編集できます...これは既知の動作ですか?ListViewのEditItem - 編集テンプレートをロードしない

さらに、c#の背後は完全な編集サイクル(特殊な編集データを読み込む)が行われていますが、通常の「ビュー」しか表示されません。

は//これは編集機能である

public void test_ItemEditing(Object sender, ListViewEditEventArgs e) 
{ 
    // returns the current key 
    DataKey currentDataKey = speiseplanListView.DataKeys[e.NewEditIndex]; 

    // fetches the information - for the whole plane 
    DataTable speiseplan = getSpeiseplan(0); 
    DataTable preisgruppen = getPreisgruppen(); 

    extractTags(speiseplan); 
    extractPreise(speiseplan, preisgruppen); 
    speiseplanListView.DataSource = speiseplan; 
    speiseplanListView.DataBind(); 
} 

の質問にいくつかの肉を追加しました - ---それは、両方の試行に完了しています。ユーザーは、「編集」ボタンを押した後に呼び出されますがのみ2回目のtryは "EditItemTemplate"を返します。

editイベントは、編集イベントがポストバックイベントであるため、page_load関数はむしろ不要です。そのため、ページの読み込みはどちらの場合もスキップされます。

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Session["USERID"] == null) 
    { 
     FormsAuthentication.SignOut(); 
     FormsAuthentication.RedirectToLoginPage(); 
     Session.Abandon(); 
    } 
    else 
    { 
     this.kantinenID = Convert.ToInt32(Request["id"]); 
     this.userID = Convert.ToInt16(Session["USERID"]); 
     if (IsPostBack == false) 
     { 
      try 
      { 
       switch (Request["action"]) 
       { 
        ...     
       } 
      } 
      catch (System.FormatException ex) 
      { 
       ... 
      } 
     } 
    } 
} 
+1

にいくつかの値であってもよく、ページのライフサイクルの問題のように...あなたはすべてのpageRequestであなたのListViewコントロールのデータをバインドしますか?あなたはいくつかのコードplsを表示することができます –

+0

質問にいくつかのコードを追加してください – Stefan

+0

ページはかなり大きいので、コードのどの部分を見たいですか? – theXs

答えて

0

あなたItemEditingハンドラの開始にこれを追加します。また

speiseplanListView.EditIndex = e.NewEditIndex; 

を、確認することspeiseplanListView.DataBind();ページロードハンドラのポストバック時に呼び出されていません。

最後に、this tutorialはこれが私に聞こえるあなた