SilverLight C#中char(1)資料類型頁面顯示解決辦法(討論)

來源:互聯網
上載者:User

背景

 

在目前很多項目中為了實現資料庫的可移植性性,把我們常見的byte資料類型改為了char(1)資料類型。。。

在頁面顯示的時候,就比較難處理了。資料讀出之後變為杯具的string型,顯示在介面上 感覺光禿禿的。。。

而且在綁定CheckBox等只有兩種狀態的控制項時,轉換時比較困難。。。

因此,我們就會想 是不是可以把他在介面上顯示的時候變為是或否,在增加的時候變為bool值,使他能夠綁定CheckBox???

對策

有人會說 在讀取資料的時候,把他判斷一下不就得了呀。。。

問題是:我們現在有三種類型,不!應該叫狀態。。。string型的“是”/“否”、true/false、string類型的“1”/“0”

三個狀態。。。在資料讀取的時候轉化有點糾結。。。。

我的方案

可以從類的屬性下手。。。。

為string的“1”/“0”建立兩個輔助屬性,一個是string類型一個是bool類型。。。

在綁定的時候,需要那個就綁定那個屬性。。。不用再費力的判斷。。。

儲存到資料庫的屬性不變。。。還是為“1”/“0”

看代碼:

C#

 /// <summary>
/// 採購類型預設值(new)
/// </summary>
public string PurType_DefaultFlag { set; get; }

public string DefaultFlagString
{
get
{
_defaultflagstring = PurType_DefaultFlag == "0" ? "是" : "否";
return _defaultflagstring;
}
set
{
_defaultflagstring = value;
PurType_DefaultFlag = value == "是" ? "0" : "1";
}
}

public bool DefaultFlagBool
{
get
{
_defaultflagbool = PurType_DefaultFlag == "0" ? true : false;
return _defaultflagbool;
}
set
{
_defaultflagbool = value;
PurType_DefaultFlag = value ? "0" : "1";
}
}

介面綁定

 <sdk:DataGrid AutoGenerateColumns="False" Name="dgSettType" Margin="5"
ItemsSource="{Binding PurTypeList}"
SelectedItem="{Binding PurTypeModel}" IsReadOnly="True">
<sdk:DataGrid.Columns>
<sdk:DataGridTextColumn Header="採購類型名稱" Binding="{Binding PurType_Name}"/>
<sdk:DataGridTextColumn Header="採購類型預設值" Binding="{Binding DefaultFlagString}"/>
<sdk:DataGridTextColumn Header="排序列" Binding="{Binding R_OrderSN}" />
<sdk:DataGridTextColumn Header="說明" Binding="{Binding PurType_Remark}"/>
</sdk:DataGrid.Columns>
</sdk:DataGrid>

介面綁定

<sdk:Label Content="採購類型名稱:" Style="{StaticResource labStyle}"/>
<Controls:TextBoxEx AllowEmpty="False" Grid.Column="1" Style="{StaticResource txtStyle}" Text="{Binding PurTypeModel.PurType_Name,Mode=TwoWay,ValidatesOnExceptions=True,NotifyOnValidationError=True}"/>

<sdk:Label Grid.Row="1" Content="採購類型預設值:" Style="{StaticResource labStyle}"/>
<CheckBox x:Name="chks" Grid.Row="1" Grid.Column="1" Margin="5,15,0,0" IsChecked="{Binding DefaultFlagBool,Mode=TwoWay}"

<sdk:Label Grid.Row="2" Content="排序列:" Style="{StaticResource labStyle}"/>
<TextBox Grid.Row="2" Grid.Column="1" Style="{StaticResource txtStyle}" Text="{Binding PurTypeModel.R_OrderSN,Mode=TwoWay}"/>

<sdk:Label Grid.Row="3" Content="備 註:" Style="{StaticResource labStyle}"/>
<TextBox Grid.Row="3" Grid.Column="1" Style="{StaticResource txtStyle}" Text="{Binding PurTypeModel.PurType_Remark,Mode=TwoWay}"/>

儲存的時候儲存,他的原值屬性即可。。。

效果預覽:

作者:記憶逝去的青春
出處:http://www.cnblogs.com/lukun/
本文著作權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文串連,如有問題,可以通過http://www.cnblogs.com/lukun/  聯絡我,非常感謝。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.