1

.Net RIAとSilverlightを試していますが、関連するエンティティがいくつかあります。クライアント、プロジェクト、ジョブ、クライアントには多くのプロジェクトがあり、プロジェクトには多くのジョブがあります。

Silverlightアプリでは、DomainDataSourceとDataFormコントロールを使用してCRUD操作を実行しています。クライアントを選択すると、プロジェクトのリストが表示されます。その時点で、ユーザーはそのクライアントの新しいプロジェクトを追加できます。クライアントの値を自動的に入力できるようにしたいのですが、それを行う方法はないようです。DataFormコントロールにAddingNewItemイベントがありますが、DataFormが新しいオブジェクトのインスタンスであり、DomainDataSourceSubmitingChangesイベントからChangeSetをトロールすることがこれを行うための最良の方法であるかどうかはわかりません。

これは明らかな機能だと思います...この機能を実現するための最良の方法を知っている人はいますか?

4

4 に答える 4

1

エンティティの作成時に既定値を設定するために、[EntityName].shared.cs というクラスを追加しました。次に、このリンクに記載されている手法を使用しました。それは私にとってはうまくいきました。

于 2011-01-26T21:37:35.350 に答える
1

さて、パーティーに遅れましたが、同じ問題に直面して、値コンバーターを使用して回避策を実装しました。

public class MissingDateTimeValueConverter : IValueConverter {

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
        if (value is DateTime && (DateTime)value == DateTime.MinValue) {
            DateTime returnValue = DateTime.Now.Date;
            int addDays;
            if (!string.IsNullOrEmpty(parameter as string) && int.TryParse(parameter as string, out addDays)) {
                returnValue = returnValue.AddDays(addDays);
            }
            return returnValue;
        } else {
            return value;   
        }
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) {
        return value;            
    }

}

欠落している日付値 (例: 01.01.0001) を今日の日付に変換し、-パラメーターを使用して日数を加算/減算できるようにしますparameter

于 2010-04-30T12:33:26.723 に答える
1

一般的に行われているのは、既存のデータを表示する DataGrid を含む画面を作成することです。次に、次のことを行う [追加] ボタンを用意します。

  1. 新しいアイテムを作成する
  2. ChildWindow を作成し、新しい項目を ChildWindow コンストラクターに渡します。
  3. 指定された項目にバインドされた、ChildWindow 内に DataForm を配置します。
于 2009-10-07T19:35:08.940 に答える
0

このソリューションを使用すると、コレクションの最後に新しいアイテムを追加できます。コレクションは DataForm にバインドされます。現在のハンドラーを終了する前に、DataForm.CurrentIndex をコレクションの最後のアイテムとして設定し、追加手順をキャンセルします。新しいアイテムが初期化/追加され、Dataform で編集できるように表示されます。

private void ResolutionDataForm_AddingNewItem(object sender, DataFormAddingNewItemEventArgs e)
    {
        // add a new iten in collection
        Resolution resolution = new Resolution() { FaultName = "test" };
        context.Resolutions.Add(resolution);
        //through binding the form gets updated
        ResolutionDataForm.CurrentIndex = context.Resolutions.Count-1;

        // cancel de current adding procedure
        e.Cancel = true;

    }
于 2013-02-08T01:50:59.077 に答える