ASP.NETのDataGridのカラムの空判定がどうしてもうまくいかなくて(空と判定されない)時間の無駄にしてしまったので備忘録
原因
asp.netの仕様だかでDataGridの見た目上は空に見えても、内部的には” ”という空白の文字列が入っている
解決方法
C#での例(VBでも方法は同じ)
①” ”をReplaceで空文字に置換してから空文字判定をする
protected void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e)
{
// 1列目(インデックス0)の値を取得
// 余計な文字( )をReplaceで空文字にする
string cellValue = e.Item.Cells[0].Text.Replace(" ", "");
if (string.IsNullOrWhiteSpace(cellValue))
{
// 空文字の場合の処理
}
}
②Server.HtmlDecode関数でデコード
※デコードの場合は、ノンブレークスペース(”\u00A0″)になるらしく、空文字ではないので判定には、string.IsNullOrWhiteSpaceを使用しないとうまくいかないので注意
protected void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e)
{
// 1列目(インデックス0)の値を取得
// Server.HtmlDecodeで余計な文字( )を無くす
string cellValue = Server.HtmlDecode(e.Item.Cells[0].Text);
if (string.IsNullOrWhiteSpace(cellValue))
{
// 空文字の場合の処理
}
}
コメント