2017-01-04 3 views
1

私はSQL Server上でこのようなデータベーステーブルを持っている:「(未設定)」私はのような値で、他の列と一緒に、PASSWORD欄のNULL値を置き換えたい(SQL)DataGridViewのNULL値を効率的に置き換える方法はありますか?

USER PASSWORD 
1  samplepassword 
2  NULL 
3  NULL 
4  sample_password 

または「 - 」時にDataGridViewにユーザーに表示します。

これを達成するには3つの方法があります。まず、列DefaultCellStyleNullValueプロパティを使用します。このメソッドの問題は、デザイナーが同じDefaultCellStyle(列ごとに1つ)を複数コピー作成することです。

DataGridViewCellFormattingイベントがあります。最後に、置き換えはSQL文そのもの、ala ISNULL(password, '(Not set)')で行うことができます。

このDataGridViewを後でユーザーがフィルタリングできることを考慮すると(パスワードなしのユーザーのみを表示するなど)、これを行う際の推奨方法は何ですか?

ありがとうございます!

+0

DataGridViewのハンドルについては、このリンクをチェックしてください。 [DataGridViewでnullをチェック](http://stackoverflow.com/questions/1979806/using-evalitem-handling-null-value-and-showing-0-against) –

答えて

3

フォーマットはSQL server責任、あなたのUIコードの書式保管しないでください。

DefaultCellStyleを使用し、DefaultCellStyleのインスタンスをコードに作成し、同じインスタンスをdatagridviewのすべての列に手動で設定します。

か、すでに

const string NULL_VALUE = "not set"; 
DataGridView.Columns["ColumnName1"].DefaultCellStyle.NullValue = NULL_VALUE; 
DataGridView.Columns["ColumnName2"].DefaultCellStyle.NullValue = NULL_VALUE; 
0
SELECT ISNULL(YourColumn, 'yourcharacter') FROM YourTableName 
0

ない私はウォルドSQL Server上が、MySQLの100%を確認してください、次の

SELECT USER, IF(PASSWORD IS NULL,'Not Set', PASSWORD) AS PASSWORD FROM TABLE 
0

は「「(未設定)」のDataGridViewから空の値を見つけ、でそれを置き換えるために、あなたのDataGridView負荷後のJavaScriptやjQueryの機能を実行するか、スタイルを存在するだけNullValueプロパティを割り当てます - "

または

空のデータセット値を値 " - "で更新します。

+0

私はフロントエンドにも配置します。値を変更する方法は、どのフレームワークがそこでプレイされているかによって異なります。データをグリッドにロードする前に、AngularJsまたは類似のフレームワークをコントローラで実行できる場合は、おそらく簡単な方法です – JFM

0

選択された答えはパラダイムの観点からは最良のものですが、これを処理するには、nullを処理するヘルパー関数を作成することもできます。これにより、データ型に基づいて変更できるデフォルト値が作成されます。また、UIに触れる前にヌルを管理することもできますが、出力を表示する前に数学を処理する必要がある場合には、クエリには影響しません。

public static dynamic NullCheck(object d, dynamic default) 
{  
     return DbNull.Value == d ? default : d; 
} 

ちょうどそのような((foo)(Nullcheck(foo, bar)))として、あなたのコード内で、必要に応じて結果をキャストする準備ができています。

関連する問題