저는 C#과 .NET 3.5를 사용하고 있으며 코드 숨김 페이지에서 프로그래밍 방식으로 dataSource를 설정하려고하는 GridView를 사용하고 있습니다. DataTable에 데이터가 있고 각 행의 열 값 (isValid 부울)에 따라 DataView에 DataRowView.AddNew() 메서드를 사용하여 DataViews - dvValid 또는 dvInvalid 중 하나에 새 행을 만듭니다. DataView 테이블에 추가 할 새 DataTable.NewRow를 만들지 않습니다. 그런 다음 GridView를 적절한 dataView에 바인딩합니다.DataView.Count different DataView.Table.Rows.Count
GridView를 정렬 할 때 문제가 있습니다. 1 행이 올바르게 정렬되지 않는 문제가 있습니다. 다른 모든 행은 올바르게 정렬됩니다. 내 코드를 디버깅 한 DataView.Table.AcceptChanges() 메서드를 호출하는 경우에도 DataView.Count 1 DataView.Table.Rows.Count 것보다 더 발견했습니다. dataTable에 모든 커밋 된 행이 있어야하므로 개수가 동일해야하므로 이상합니다.
왜 2 카운트가 다른가요? DataView는 DataTable의 하위 집합이므로 DataTable과 같거나 적은 행을 가져야합니다. DataView를 채울 때 DataView를 직접 만들지 말고 먼저 만들어야합니까? 지금 당장은 dDataTableRow없이 DataRowView를 직접 작성하고 있습니다. 올바른 방법입니까?
도움 주셔서 감사합니다.
코드 : C#
...
//get the data as DataTable
members = GetMemberDataTable();
//create views from a new DataTable with no rows
dvValidMembers = new DataView (CreateMembersDT("ValidMembers"));
dvInValidMembers = new DataView (CreateMembersDT("InvalidMembers"));
//iterate thru each row and put into appropriate DataView
foreach (DataRow memberRow in members.Rows)
{
if ((bool)memberRow["isValid"])
//Add to valid members Dview
member = dvValidMembers.AddNew();
else
//add to InValid members Dview
member = dvInvalidMembers.AddNew();
member["memberID"] = memberRow["memID"];
} //foreach
dvInvalidMembers.Table.AcceptChanges();
dvValidMembers.Table.AcceptChanges();
}
private System.Data.DataTable CreateMembersDT (string tableName)
{
System.Data.DataTable dtMembers = new System.Data.DataTable(tableName);
dtMembers.Columns.Add(new DataColumn("memID", typeof(int)));
return dtMembers;
}
답은 DataRowView.EndEdit() 메서드를 호출하여 DataView.DataTable.Rows 컬렉션에 추가하고 두 Row 수 모두 일치하도록하는 것입니다. 또한 GridView.Sort() 메서드는 행을 정렬 할 때 DataView.DataTable.Rows 컬렉션을 찾습니다. 그러나 GridView를 표시 할 때 DataView.DataViewRows 컬렉션을 사용하여 행을 표시한다고 추측합니다. 그 이유는 정렬 할 때 모든 행에서 마지막 행을 뺀 것이고, 표시 할 때 모든 행을 표시하는 이유입니다. – Pritika
예, 아마도. 보기를 통해 정렬 및 필터를 수행 할 수 있습니다. –