2011-11-29 49 views
0

我試圖使用列表框顯示是/否並綁定到我的Sql Server數據庫中的位字段。
我的代碼(特別是我的綁定)看起來是否正確?列表框與IValueConverter Bool是是否...幾乎可以工作,但不完全

當使用它時,它使用Yes(true)語句或No(false)語句創建記錄,我甚至可以在數據庫中將No(false)更新爲Yes(true)... 。但是我不能編輯Yes(真)到No(False)...如果我調試了一切看起來不錯,直到我打我的RiaService,然後使用Sql Profiler,字段沒有更新。

哦,是的,如果我將這個相同的代碼綁定到varchar字段並排除轉換器,一切工作正常。

public class ConvertBoolToYesNo : IValueConverter 
{ 
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      if (value == null) 
       return null; 
      string outValue; 
      bool inValue = (bool)value; 

      outValue = inValue ? "Yes" : "No"; 

      return outValue; 
     } 
     public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      if (value == null) 
       return null; 
      bool? outValue; 
      string inValue = (string)value; 
      inValue = inValue.Trim(); 

      if (inValue == "Yes") 
      { 
       outValue = true; 
      } 
      else 
       if (inValue == "No") 
       { 
        outValue = false; 
       } 
       else 
       { 
        return DependencyProperty.UnsetValue; 
       } 
     return outValue; 
    } 
<ListBox x:Name="lbCounselExempt" 
ItemsSource="{Binding Path=Choices}" 
DisplayMemberPath="Name"         
SelectedValue="{Binding Path=Model.CounselExempt, Mode=TwoWay,Converter={StaticResource ConvertBoolToYesNo}}" 
SelectedValuePath="Name" 
Style="{StaticResource RadioButtonList}" /> 
+0

我想我解決了或者至少找到了解決我自己問題的方法。在SQL表中,我有一個字段設置爲'位',它是可空的。在我的實體模型中,我將Nullable的field屬性設置爲'false'。一旦我將它設置爲「(無)」,事情就開始奏效。不知道爲什麼,我發現了很多關於這個主題的帖子,我很幸運,我的其他位域之一可以正常工作,我可以比較這些設置。 – MongooseNX

回答

0

如果你可以調試一下,看看該值被改變您撥打電話到您的RIA服務的權利之前,那麼它是不是一個valueconverter問題。更可能的是,它與服務器端的對象的傳輸/序列化有些模糊。

+0

感謝您花時間回答......我想我明白了......我不完全瞭解潛在的問題,但至少我有一個解決方法。 – MongooseNX

相關問題