كيف يمكن تعيين القيم الأولية عند استخدام Silverlight DataForm و .صافي ريا الخدمات DomainDataSource?

StackOverflow https://stackoverflow.com/questions/1432060

سؤال

أنا تجريب .صافي ريا و Silverlight, لدي عدد قليل من الكيانات ذات الصلة;العميل المشروع و عمل عميل لديها العديد من المشاريع ، المشروع العديد من فرص العمل.

في سيلفرلايت التطبيق, أنا uisng على DomainDataSource ، DataForm ضوابط لتنفيذ عمليات الخام.عند عميل يتم تحديد قائمة من المشاريع التي تظهر عند أي نقطة يمكن للمستخدم إضافة مشروع جديد لهذا العميل.أود أن تكون قادرة على ملء الفراغ في قيمة العميل تلقائيا ، ولكن هناك لا يبدو أن هناك أي طريقة للقيام بذلك ، في حين أن هناك AddingNewItem الحدث على DataForm التحكم ، ويبدو أن الحريق قبل DataForm له مثيل من الكائن الجديد وأنا لست متأكدا من الصيد بشباك الجر من خلال التغيرات المعينة على من DomainDataSource SubmittingChanges الحدث هو أفضل طريقة للقيام بذلك.

وأود أن من يعتقد أن هذا كان من ميزة واضحة...أحد يعرف أفضل طريقة لتحقيق هذا وظيفة ؟

هل كانت مفيدة؟

المحلول

حسنا، ويجري في وقت متأخر للحزب ولكن تواجه نفس المشكلة I نفذت الحل باستخدام تحويل القيمة:

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 المعلمة.

نصائح أخرى

ما هو عادة القيام به هو أن تكون الشاشة التي تحتوي على DataGrid عرض البيانات الموجودة.ثم إضافة زر من شأنها أن:

  1. إنشاء عنصر جديد
  2. إنشاء ChildWindow, تمرير بند جديد إلى ChildWindow منشئ
  3. يكون DataForm داخل ChildWindow, لا بد أن العنصر المحدد

لتعيين القيم الافتراضية كما يتم إنشاء كيان بلدي أضفت فئة تسمى [EntityName] .shared.cs. وبعد ذلك استخدم تقنية وردت في هذا صلة . وهي تعمل بشكل جيد بالنسبة لي.

وهذا الحل يسمح لك بإضافة بند جديد في نهاية مجموعة. لا بد من جمع إلى 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;

    }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top