- - PR -
カスタムDropDownListとDetailsViewとの連動について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-08-07 10:37
VS2005 C# でWEBアプリケーションで商品注文・変更を行う画面を開発しております。
WEBアプリ初心者で、的外れな質問かもしれませんが、どうか御教授願います。 商品を選択するDropDownListを作成するため DropDownList を継承した ProductsDropDownList と言うものを作成しました。 その ProductsDropDownList は、予めデータベースからデータを検索してあるDataSetをリストする様に 以下のコーディングを施しております。 ----------------- public class ProductDropDownList : DropDownList { protected override void OnInit(EventArgs e){ DataSet ds = [予め用意してあるマスタDataSet]; this.DataSource = ds.Tables["PRODUCTS"]; // 商品マスタ this.DataTextField = "PRODUCT_NAME"; // 商品名 this.DataValueField = "PRODUCT_ID"; // 商品ID this.DataBind(); } } ----------------- 次に Order.aspx というページを作成し 1.注文情報のObjectDataSource と、DetailsView を貼付け、 2.DetailsView のデータソースを 注文情報のObjectDataSourceに設定しました。 3.このDetailsView のEditTemplateに、先ほどのProductsDropDonwList 貼り付け 4.SelectedValue を 注文情報の[商品ID]というカラムにバインドさせましたが 実行時にProductDropDownList 側の this.DataBind() で以下の例外が発生してしまい困っております。 例外:Eval()、XPath()、および Bind() のようなデータバインド メソッドは、データバインドされたコントロールのコンテキストでのみ使用することができます。 「4」のSelectedValue にバインドさせないなど、データと連動させなければ、例外は発生しませんが、それでは注文情報のデータを初期表示できません。 ----------------- 普通のDropDownList を貼り付け、画面に商品選択用に ObjectDataSource を貼り付けるのが通常なのかもしれませんが、このProductsDropDownListは 他の画面でも沢山使うため、煩雑な処理はなるべく避けたいと考えております。 願わくば「ProductsDropDownList を貼り付けるだけにしたい。」のです。 何か良い方法は無いものでしょうか? それとも、私が何か勘違いしているのでしょうか? よろしく御願いいたします。 |
1