【ASP.NET】DataGridのカラムの空判定がうまくいかない場合の対処方法(原因は” ”)

スポンサーリンク

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))
	{
		// 空文字の場合の処理
	}
}

コメント

タイトルとURLをコピーしました