2009-06-02 23 views
2

dataTypeがvarBinaryのデータベースフィールドがあります。今私はそのデータを表示したいgridViewで。varBinaryフィールドのデータを表示する方法

System.Byte[] 

ないデータベースにある値

0x2C6D1A 

:しかし、私は出力を取得しています。

この問題の解決方法をお手伝いしてください。

答えて

4

あなたは表示目的のために、あなたのバイト配列をフォーマットしBitConverterクラスを使用することができます。

string forDisplay = 
    "0x" + BitConverter.ToString(yourByteArray).Replace("-", string.Empty); 

あなたはstringBitConverter has a load of methodsに直接変換したくない場合は、様々な他のタイプのバイト配列から変換します。

EDIT ...

あなたはGridViewコントロールに直接いくつかのクエリ結果を結合している場合、クエリ自体にVARCHARにごVARBINARY列を変換する方が簡単かもしれません:

SELECT CONVERT(VARCHAR(MAX), your_varbinary_column, 1) AS for_display 
FROM your_table 

(注:このタイプの変換 - VARBINARYからVARCHARまでは'0x1234AB'フォーマットです - SQL Server 2008では正しく動作します。以前のバージョンのSQL Serverはビンのみをキャストしました直接文字データに進データ)

+0

あなたは、もう少し具体的に説明してくださいできます。このコード行を追加する場所を理解できませんでした。申し訳ありません。 'string forDisplay = " 0x "+ BitConverter.ToString(yourByteArray).Replace(" - "string.Empty); ' –

0

利用できる明白な何でも、多分ちょうどループがない場合:。

public static string ToHexString(byte[] raw) 
    { // could also be an extension method 
     StringBuilder sb = new StringBuilder("0x", 2 + (raw.Length * 2)); 
     for (int i = 0; i < raw.Length; i++) 
     { 
      sb.Append(raw[i].ToString("X2")); 
     } 
     return sb.ToString(); 
    } 

が、これはクラスプロパティである場合は、ないTypeConverterを作成するために、些細なことだろうこの(表示用)、および[TypeConverter(typeof(HexConverter))]でプロパティをマーク:

class HexConverter : TypeConverter // untested 
    { 
     public override object ConvertTo(ITypeDescriptorContext context, 
      System.Globalization.CultureInfo culture, 
      object value, Type destinationType) 
     { 
      if (destinationType == typeof(string)) 
      { 
       return ToHexString((byte[])value); 
      } 
      return base.ConvertTo(context, culture, value, destinationType); 
     } 
    } 
+0

SQL ServerからDataGridにデータをバインドするには?ユーザーにファイルを更新するオプションを与える必要があります(既存のファイルを新しいファイルで置き換える)。まず、SQL Serverから既存のファイルをロードして、ユーザーにオプションを指定して置き換えるか、ロードせずに置き換えるWebアプリケーションに? –

+0

@RehanMehdi全く関係のない質問のようです。私はちょうどオブジェクトモデルにそれを投げるだろう... –

+0

返信いただきありがとうございます。それを書いて私を助けてくれますか?私はオブジェクトプログラミングの新しいです。自分のコードで新しい質問を始めるべきですか? –

関連する問題