2012-04-01 8 views
0

私は2つのリストビューを持っています。一つはデータが表示され、もう一つはデータを挿入する場所です(InsertItemTemplate)。最初のボタンがクリックされ、データがデータベースに入力されると、もう一方が更新されます。ボタンを押したときにリストビューを更新する

これは私がこれまで試した方法です:

<asp:Button ID="InsertButton" runat="server" CommandName="Insert" Text="Add movie" OnClick="InsertButton_OnClick" /> 

とのaspxファイル内を:

protected void InsertButton_OnClick(object sender, EventArgs e) 
{ 
    Response.Redirect(Request.RawUrl); 
} 

私が使用する "のResponse.Redirect(Request.RawUrlを);"私のデータは入力されないので、動作しません。代わりに、これを機能させるために何を使用すべきですか?

ありがとうございます!

+0

リダイレクトする必要はありません。 2番目のリストをバインドするには、同じイベントでlist2.DataBind()を呼び出すと、ItemInserted –

答えて

1

ItemInsertedイベントを処理し、InsertButtonからOnClick="InsertButton_OnClick"を削除します。

Clickイベントが最初に起動され、その後バブリングされたイベント(この場合はItemInserted)が原因で問題が発生すると考えられます。リダイレクトはコードの実行を終了します。

0

実際にデータをデータベースにプッシュ/挿入する必要があります。ボタンはイベントを起動するだけですが、反応としては、ページを自分自身にリダイレクトすることです。

protected void InsertButton_OnClick(object sender, EventArgs e) 
{ 
    InsertDataToDatabase(); 
    ReloadListViews(); 
} 

メソッドInsertDataToDatabaseは()データをプッシュしますが、データベースへ:

だから、あなたはこのような何かを行う必要があります。

private void InsertDataToDatabase() 
{ 
    using (myDataContext db = new myDataContext()) 
    { 
     Book b = new Book(); 
     b.Title = "Some title from selected textbox"; 
     b.Year = DateTime.Today.Year; 

     db.Books.AddObject(b); 
     db.SaveChanges(); 
    } 
} 

し、あなたの方法のReloadListViews():

private void ReloadListViews() 
{ 
    listView1.DataSource = SomeDbClass.GetItems(); 
    listView1.DataBind(); 

    listView2.DataSource = SomeDbClass2.GetItems2(); 
    listView2.DataBind(); 

    // .... 
} 

は、あなたのアイデアを得るホープそれはこのような何かを見ることができます。そうでない場合は、お気軽にお問い合わせください。

+0

OPには触れられませんでしたが、DataSourceコントロール –

+0

@AdrianIftodeを使用していると感じています。しかし、私は彼に完全なソリューションを提供していませんでしたが、目標を達成するためのアイデアを与えたかっただけです。彼の特定の状況に合わせてコードを修正するのは彼の責任です。 – walther

+0

はい、DataSourceコントロールを使用していますが、データは自分のデータベースに挿入されていますが、他のテーブル(listview)で表示するには、アイテムを削除するなどの更新が必要です。 –

関連する問題