- PR -

FormView上のユーザーコントロールに、データバインドしたい

1
投稿者投稿内容
cat
会議室デビュー日: 2006/07/10
投稿数: 2
お住まい・勤務地: 東京
投稿日時: 2006-07-10 19:56
VS2005 VB/ASP.NET でwebアプリケーションの開発を行っています。

[質問]
ユーザーコントロール上のコントロールにデータバインドすることは可能でしょうか。

[試したこと]

Webユーザーコントロールを作成
wuc.ascx
+--Label1
+--TextBox1(今回データバインド対象にしたい)

テスト用のページを作成
Default.aspx
+--FormView1
+--wuc1
+--SqlDatasource1

バインド可能プロパティを作ろうと考え、
ユーザコントロールにTextプロパティを作成しました。
Textプロパティは、Get/Set時にTextBox1.Textを書き換えるようにしました。

コード:
Private _text As String
Public Property Text() As String
    Get
        _text = TextBox1.Text
        Return _text
    End Get
    Set(ByVal value As String)
        _text = value
        TextBox1.Text = _text
    End Set
End Property



VS2005のデザイナからは、DataBindingsを指定できなかったので
直接HTMLソースを開き、ユーザコントロールの箇所に
Text='<%# Bind("CategoryName") %>' と記述しました。

[実験結果]
Northwind のCategoriesテーブルを対象に実験したところ、
Select はできたのですが、Update時に例外が発生しました。。

[エラーメッセージ]
値 NULL を列 'CategoryName'、テーブル 'Northwind.dbo.Categories' に挿入しようとしましたが、この列は NULL を挿入できません。 UPDATE は失敗します。
ステートメントは終了されました。


以上です。
cat
会議室デビュー日: 2006/07/10
投稿数: 2
お住まい・勤務地: 東京
投稿日時: 2006-07-13 00:06
自己解決。

上記はユーザーコントロールはポストバック毎に初期化される、
という仕組みを知らなかったための疑問でした。
.ascxのデータバインドさせたいプロパティを
ビューステートに保存するというやりかたで解決できました。

(参考にしたURL)
http://msdn2.microsoft.com/ja-JP/library/26db8ysc.aspx
1

スキルアップ/キャリアアップ(JOB@IT)