Silverlight DataForm 및 .NET RIA Services DomainDatasource를 사용할 때 초기 값을 설정하려면 어떻게해야합니까?

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

문제

.NET RIA와 Silverlight를 실험하고 있는데 몇 가지 관련 엔티티가 있습니다. 고객, 프로젝트 및 직업, 고객은 많은 프로젝트를 가지고 있으며 프로젝트에는 많은 일자리가 있습니다.

Silverlight 앱에서는 DomainDatasource를 UISNG 및 CRUD 작업을 수행하기위한 DataForm 컨트롤입니다. 클라이언트가 선택되면 프로젝트 목록이 나타나며,이 시점에서 사용자는 해당 클라이언트에 새 프로젝트를 추가 할 수 있습니다. 클라이언트의 값을 자동으로 작성할 수 있기를 원하지만 그렇게 할 방법이없는 것 같습니다. DataForm 컨트롤에 추가 된 이벤트가 있지만 DataForm이 새로운 객체의 인스턴스와 DomainDatasource 제출 체인지 이벤트의 Changes 셋을 트롤링하는 것이 가장 좋은 방법입니다.

나는 이것이 명백한 특징이라고 생각할 것입니다 ... 누구나이 기능을 달성하는 가장 좋은 방법을 알고 있습니까?

도움이 되었습니까?

해결책

글쎄, 파티에 늦었지만 같은 문제에 직면하면 값 변환기를 사용하여 해결 방법을 구현했습니다.

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-파라미터.

다른 팁

일반적으로 수행되는 것은 기존 데이터를 보여주는 데이터 그라이드가 포함 된 화면을 갖는 것입니다. 그런 다음 추가 버튼이 있습니다.

  1. 새 항목을 만듭니다
  2. 어린이 와인도를 만들고 새 항목을 보육원 생성자에게 전달합니다.
  3. 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