asp.net 動的データ サイトに「ソフトウェア リリース」テーブルを表示しようとしています。Release テーブルには、ビルド番号が 3 つの int フィールド (Major、Minor、Build) として格納されています。私は EntityFramework を使用しているため、EF モデルがデータベース スキーマにバインドされています。私の動的データ サイトでは、Release オブジェクトが表示される場所 (特に関連オブジェクトのページで外部キーとして表示される場合) に、ビルド番号を 1 つのフィールド (Major.Minor.Build) として表示したいと考えています。この「計算された列」はデータベースのフィールドではないため、Dynamic-Data にそれを認識または表示させる方法はないようです。Release オブジェクトにプロパティを追加できますが (これは EF によって生成された部分クラスであるため)、「列」ではないため、Dynamic-Data はそれを認識しません。リリースを 3 つの個別のフィールド (メジャー、マイナー、ビルド) として編集したいのですが、表示されるときは 1 つのフィールドとして表示されるようにしたいです。DynamicData フレームワークは複合フィールドをサポートしていないようで、EF モデルにない場合、オブジェクトのプロパティを表示/バインドしません。フォーマットされたバージョン番号プロパティをデフォルトの表示値にするにはどうすればよいですか?
2143 次
2 に答える
4
動的データ UI のカスタマイズを行う場合と同様に、メタデータ クラスを追加できます。次に、メタデータに UIHint を作成して、カスタム オブジェクトに使用するコントロールを動的データに伝えます。例えば
[MetadataType(typeof(EMetadata))]
public partial class E{
public string RefNR {
get {
return "E" + this.EntryID.ToString().PadLeft(5, '0');
}
}
}
public partial class EMetadata {
[UIHint("Text")]
public object RefNR;
}
于 2009-09-05T08:11:19.000 に答える
3
データベースから返された DataTable/DataSet にバインドしているのか、それとも Release オブジェクト自体にバインドしているのかはわかりません。どの種類のコントロールでもない。
DataSet/DataTable にバインドしている場合は、SQL を変更して、バージョンを 1 つのフィールドとして返すようにします。
SELECT table1.Major + '.' + table1.Minor + '.' + table1.Build AS Version ....
ただし、DropDownList などのオブジェクトにバインドしている場合は、ToString メソッドをオーバーライドすると、DropDownList の Display 値になると思います。
Public Overrides Function ToString() As String
Return _major.ToString & '.' & _minor.ToString & '.' & _build.ToString
End Sub
于 2009-02-18T03:44:25.787 に答える