2010-08-17 4 views
3

일부 일상적인 사용자 데이터를 추적하고 입력하는 데 사용되는 웹 응용 프로그램을 작성 중입니다 ... 매일 여러 명의 사용자에 대한 데이터를 수동으로 입력해야합니다 ...GridView 초기 편집 모드?

캘린더에 날짜를 선택합니다. 그 날짜에 선택한 날짜에 모든 사용자에 대해 할당 된 DB 값을 얻게 될 것입니다 ... 해당 날짜에 대한 데이터베이스에 일부 항목이있는 경우이를 gridview에 표시합니다 ...

다음은 선택한 gridview의 모양입니다. 날짜 ...

 
USERS DATA 
------------ 
User1 Data1 
User2 Data2 
User3 Data3 

그러나 DB에 항목이없는 날짜를 선택하면 각 행에 사용자 이름을 포함하는 gridview를 표시하고 싶지만 두 번째 열 (DATA 필드)을 처음에는 모든 행에 대해 편집 할 수 있습니다 (전체 두 번째 열에는 값을 삽입하기위한 텍스트 상자가 있어야합니다. 내가이

 
USERS DATA 
---------------- 
User1 TextBox 
User2 TextBox 
User3 TextBox 

내 생각 같은 것을보고 싶지있는 gridview 모드) 원하는 값의 허용 삽입 ...

는 DB에서 사용자 목록을 반환 사용자 이름을 containg 첫번째 열이있는 데이터 테이블을 만드는 것입니다 , 두 번째 컬럼은 비어 있습니다 ...이 데이터 테이블은 편집 모드를 사용하지 않을 gridview의 데이터 소스가 될 것이며, 정상적인 (표시) 모드에서는 TextField의 TemplateField containg을 갖게 될 것입니다 xes는 두 번째 열에서 해당 데이터 테이블에 바인딩되고 레이블은 첫 번째 열에 사용자 이름을 표시합니다 ... 모든 값을 입력하면 데이터 테이블에서 입력 된 값을 읽고 데이터베이스에 저장하는 메서드를 호출하는 SAVE 버튼이 표시됩니다 ...

이 기능을 구현하는 더 좋은 방법이 있습니까? Templatefield 텍스트 상자가 datatable에 바인딩되면 (gridview 데이터 소스로) 입력 된 값은 데이터 객체에서 액세스 할 수 있지만 저장 버튼을 클릭하면 포스트 백이 발생하고 데이터 테이블 상태를 유지하는 방법을 모르겠습니다. 새로운 값을 삽입하기위한 전체 두 번째 열을 사용하여 원하는 gridview를 얻는 더 좋은 방법이 있습니까?

도와 주셔서 감사합니다. & 시간!

답변

0

데이터베이스에서 왼쪽 조인을 사용하여 전체 데이터 집합을 검색하고 사용자에 대한 항목이없는 경우 해당 사용자는 빈 값으로 반환됩니다. 이런 식으로 뭔가 :

선택 users.user, ISNULL (entries.entry은, '') 사용자 에서 는에 항목을 가입 왼쪽 users.userid = entries.userid

난 당신이 OnDataBinding을 (오버라이드 (override) 할 수 있다고 생각 또는 OnDataBound) 메서드를 사용하여 두 번째 열이 비어 있는지 확인하고 필드가 있으면 편집 모드로 둡니다. 이렇게하면 일부 사용자는 항목이 있지만 일부 사용자는 항목이없는 경우 편집 모드가됩니다. 항목이있는 모든 사용자는 표시 모드가됩니다. 이것에 대한 샘플은 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.onrowdatabound.aspx입니다.

+0

하면 빠른 답변을 주셔서 감사합니다 시도 처음에는 편집 모드에서 단일 저장/적용 버튼에 여러 항목이있는 업데이트 데이터 소스를 클릭하십시오. – Zzz