2010-02-02 1 views
4

안녕하세요, 저는 하나의 테이블을 갖는 데이터 집합에 5 개의 열이 데이터베이스의 데이터를 채우도록했습니다.asp.net에서 데이터 집합 열 값을 편집하는 방법

응용 프로그램 datatable을 실행하면 50 개 이상의 행이 포함되어 있는데, 나는 databse에서 데이터를 가져온 후 datatable의 값을 업데이트하고 싶습니다. 내 요구 사항은

  1. 이 테이블에는 Null 값을 갖는 셀이 거의 없으므로 null을 "-"로 바꾸시겠습니까?
  2. 하나의 열은 System.datetime 데이터 형식입니다. 여기서 시간을 제거하려고합니다. 나는 데이트 만하고 싶니?

나는 PUSH 방식을 사용하는 asp.net의 수정 보고서에서이 데이터 세트를 사용하고 있습니다.

여기 나는 데이터 테이블에있는 행의 한 루프를 적용하고 이에 따라 셀을 업데이트한다고 생각하고 있습니다. 하지만 직접 업데이트 방법을 찾고 있습니까?

2 가지 문제를 어떻게 해결할 수 있습니까?

답변

0

질문의 한 부분은 데이터베이스에서 SQL을 사용하여 수행 할 수 있습니다. 여기서 u는 업데이트 문을 수행하고 빈 셀을 "-"로 대체합니다. 귀하의 질문의 다른 부분은 나에게 분명하지 않았습니다. DataGrid를 사용하여 데이터 열의 행을 편집 할 수 있는지 묻는다면 this 문서를 읽고 편집 가능한 모드로 바꿀 수 있습니다.

+0

감사합니다 데이터 테이블의 모든 null 값을 단일 문자로 바꿀 수 없습니다. –

3

당신이가는대로 확실히 값을 업데이트 행을 통해 해결책을한다 반복하고, 아주 쉬운 :

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}") %> 
+0

감사합니다. 사실 나는 크리스탈 리포트에서 PUSH 방식을 사용하고 있는데, 여기서는 보고서에서 데이터 세트 열을 사용하고 있습니다. –

+0

확인. 저는 Crystal Reports에 대해 아무것도 모릅니다. 그러나 처음 두 솔루션은 'DataTable'에 대한 참조가있는 한 계속 작동해야합니다. –