電子書籍の厳選無料作品が豊富!

VS2008 C#でASP.NETページを作っています。
1つのFormViewでバインドさせるデータを切替えしたいのですが
可能なのでしょうか?
テーブルのカラム数、データ型は同じでカラム名だけが違います。

ながれとしては
パラメータでselectするテーブルを切替える
SqlDataSource1 = select from a ⇔ SqlDataSource1 = select from b

DataBinder.Evalメソッドの第2引数をa.xxx ⇔ b.xxx変更できるのでしょうか?
DataBinder.Eval(Container.DataItem, "xxx")

宜しくお願いします。

A 回答 (1件)

C# ASP.NET2.0のケースで説明します。



たとえばDataTable1でデータを取得し直したとして、
this.FormView1.DataSourse = DataTable1.DefaultView();
this.FormView1.DataBind();
とすれば、DataSourceを切り替えることが可能です。

ただし、aspx側でカラムを固定(<%# Eval("userName") %>など)している場合は、新しいデータソースに同一のカラム名が必要になるため、

1.DataTable側のColumnコレクションなどを嬲って、Bind前に一時的に同一のカラム名にしてしまう
2.aspx側に固定カラム名<%# Eval("userName") %>を書かずに、FormViewのデータバインドイベント、OnItemDataBoundを受けて、Bindデータを手動でコントロールに移す
3.aspx側に固定カラム名でなく、Bind時クエリ式、<%# GetUserName() %>などとして、コード側で状況に応じて値を変えてやる
などの方法があります。

普通は、データソースの変更ということでなくても、DBのカラムデータをそのまま画面表示することは稀なので、ほとんどは2か3の方法が混用されていると思いますので、よく行われる手法だと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!