당신이가는대로 확실히 값을 업데이트 행을 통해 해결책을한다 반복하고, 아주 쉬운 :
foreach (DataRow row in table.Rows)
{
if (row.IsNull("foo")) row["foo"] = "-";
if (row.IsNull("bar")) row["bar"] = "-";
row["date"] = ((DateTime)row["date"]).Date;
}
을 다른 방법으로는 컨텐츠를 자동 생성하는 expressions을 사용하여 테이블에 새 열을 만들 수 있습니다 : (당신이 자신을 밖으로 마지막을 파악해야합니다 그래서 ADO.NET의 날짜 함수를 모른다.)
table.Columns.Add("foo_dash", typeof(string), "IsNull(foo, '-')");
table.Columns.Add("bar_dash", typeof(string), "IsNull(bar, '-')");
당신은 tagge이 d 귀하의 게시물 ASP.NET, 그래서 당신이 DataTable
일부 멀티 레코드 데이터 컨트롤 (GridView
, Repeater
, 등) 바인딩 할 것이라고 가정하는 것이 합리적입니다 같아요. 이 경우, 대신 데이터 바인딩 중에 변환을 수행하는 것이 더있을 수 있습니다
protected void theGrid_OnRowDataBound(object sender, GridViewRowEventArgs e)
{
var data = e.DataItem as DataRowView;
if (data != null)
{
if (data.Row.IsNull("foo")) e.Row.Cells[0] = "-";
if (data.Row.IsNull("bar")) e.Row.Cells[0] = "-";
}
}
을이 조금 더 많은 코드를 필요로하는 것 같지만, 그것은 또한 당신에게 더 많은 유연성을 제공합니다. 예 : GridView
에서
if (data.Row.IsNull("importantField")) e.Row.CssClass = "error";
는, 날짜가 열 선언에 DataFormatString
을 사용하여 포맷 할 수 있습니다
<asp:BoundField DataField="data" DataFormatString="{0:d}" />
과 유사하게 Repeater
데이터 바인딩 때, 수
<%# Eval("date", "{0:d}") %>
감사합니다 데이터 테이블의 모든 null 값을 단일 문자로 바꿀 수 없습니다. –