문제

나는 ObjectDatasource와 함께 Formview를 사용하고 < %# bind ( "allingprop") %>를 사용하여 바인딩을 사용하고 있으며 내 nullable 열은 유형의 기본값으로 다시 돌아옵니다.

FormView 객체에는 다른 바인딩 컨테이너와 마찬가지로 ConvertEmtPyStringTonull 속성이없는 것으로 보입니다. 나는 이것이 vs 2005 / .NET 2.0의 버그라고 제안하는 기사를 발견했지만 해결책이 무엇인지는 보지 못했습니다.

ODS_INSERTING 이벤트에서 모든 필드를 다시 캡처하지 않고이 문제를 해결할 수있는 방법에 대한 제안이 있습니까? 오히려 널을 테스트하기 위해 양식의 모든 바운드 필드를 다시 바꾸기 위해 코드를 작성할 필요가 없습니다.

도움이 되었습니까?

해결책

그것으로 어려움을 겪었습니다. 드롭 다운 목록의 경우 다음을 수행합니다.

AppendDataBoundItems="true"


<asp:ListItem Text="" Value=""></asp:ListItem>

내 ObjectDatasource의 경우, 내 업데이트 메모드조차도 단일 매개 변수, 엔티티를 가져옵니다.

<UpdateParameters>
    <asp:Parameter Name="No_Empl_Ferme" Type="Int32" ConvertEmptyStringToNull="true" />
</UpdateParameters>

나는 삽입물에 대해서도 똑같이한다.

잘 작동합니다.

다른 팁

나는이 일을 끝내게되었지만, 샷건 접근 방식이지만이 경우 모두 빈 문자열 값 중 널이어야합니다. 또한 코드에 문자열 배열을 사용하여 널리킹되어야하는 값을 지정 한 다음 모든 값을 초과하지 않고 문자열 배열을 통해 루프 할 수 있습니다.

protected void RequestItemFormView_ItemInserting(object sender, FormViewInsertEventArgs e)
{
    for (int i = 0; i < e.Values.Count - 1; i++)
    {
        if (e.Values[i].ToString() == string.Empty)
        {
            e.Values[i] = null;
        }
    }
}

객체 DataSource에서는 convertemtpystringtonull = "true"에 속성을 사용하여 각 nullable 유형에 대한 InsertParameters를 추가해야합니다.

<InsertParameters>
   <asp:Parameter Name="NullableFieldName" Type="Int32" ConvertEmptyStringToNull="true"  />            
</InsertParameters>

인용구 : Tonio- 나는 개별 매개 변수를 사용하지 않고 대신 DataObjectTyPename을 사용하고 있습니다. 내 삽입 메소드는 단일 매개 변수를 사용하며 데이터베이스에 다시 저장하고 싶은 비즈니스 객체입니다. - Scott Ivey 5 월 1 일 12:57

나는 이것을 다음과 같이 고쳤다 :

 protected void FormViewSettings_ItemUpdating(object sender, FormViewUpdateEventArgs e)
  {
     OrderedDictionary values = e.NewValues as OrderedDictionary;

     var personID = values["PersonID"];

     if (string.IsNullOrEmpty(personID.ToString()))
     {
        values.Remove("PersonID");
        values.Add("PersonID", null);
     }
  }

약간의 해킹이지만 잘 작동합니다. 이렇게하면 ConvertImpystringTonull 설정을 사용하지 않고 객체 속성을 String.mull로 설정할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top