0

次のクエリを使用しています。

string query = @"SELECT r.id, user_name, user_phone, date_create, REPLACE( date_payment,  '0000-00-00 00:00:00',  'Не оплачено' ) as 
                date_payment, payment_method, amount, rs.name_ru
                FROM request AS r, request_status AS rs
                WHERE r.status = rs.id";

そして、私は次の方法でデータテンプレートをバインドしています:

DataTemplate>
    <TextBlock VerticalAlignment="Center" Text="{Binding date_payment}" Width="135" />
</DataTemplate>

「 date_payment 」を除いて正しい出力をスローします。その出力値は「System.Byte[]」になります。助けてください!!!

MBen からの感謝

class ByteArrayToString : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value != null)
            {
                var listOfBytes = value as Byte[];
                string output = "";
                output = System.Text.Encoding.UTF8.GetString(listOfBytes);
                return output;
            }

            return "";
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return DependencyProperty.UnsetValue;
        }
    }
4

2 に答える 2

2

date_payment は配列であり、それを表示するための WPF の方法を提供していないため、ToString. そのためのデータコンバーターを提供できます。

Window または page にリソースを追加します。

   <Window.Resources>
        <local:ByteArrayToString x:Key="ByteArrayConverter" />
    </Window.Resources>

あなたTextBlockのようにそれを使用してください:

<TextBlock VerticalAlignment="Center" Text="{Binding date_payement, Converter={StaticResource ByteArrayConverter}}" Width="135" />

次に、変換を行う新しいクラスを追加する必要があります。

    class ByteArrayToString : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value != null)
            {
                var listOfBytes = value as Byte[];
                string output ="";
                output = listOfBytes.Aggregate(output, (current, elemt) => current + elemt.ToString());
                return output;
            }

            return "";
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return DependencyProperty.UnsetValue;
        }
    }
于 2012-07-16T09:06:21.977 に答える
0

このことは私に起こりました。これはコネクタのバグによるものと思われます。日付列をCHARにキャストしてみてください。それは私のために働いた。

于 2012-07-16T09:04:54.830 に答える