리피터 및 일부 필드가있는 업데이트 패널이 있습니다. 사용자가 필드의 세부 정보를 채울 때 Viewstate에 보관 된 콜렉션을 채 웁니다. 그런 다음 Viewstate는 리피터에 바인딩됩니다.리피터 및 편집 가능 필드가있는 UpdatePanel
그러면 updatepanel이 업데이트되고 repeater에 사용자가 방금 양식에 기입 한 값이 새 항목으로 포함됩니다.
또한 리피터의 일부로 편집 버튼이 있는데, 클릭하면 사용자가 처음 입력 한 데이터로 양식 필드가 채워집니다.
내가하고 싶은 것은 사용자가이 데이터를 편집하고 항목을 '저장할'수 있지만 컬렉션/뷰 상태에 추가하는 대신 사용자가 선택한 항목을 편집하고 콜렉션/viewstate를 반영합니다.
예를 들어, 두 개의 필드로 양식을 상상 :
이름 : 나이 : 나는 밥과 46을 입력하고 저장 히트
.
리피터에 Bob 46 옆에 '편집'버튼이있는 항목이 표시됩니다. 사용자가 편집 버튼을 클릭하면 폼 필드에 Bob과 46이 다시 채워집니다.
사용자는 Bob Age 47로 변경하고 저장합니다. 이제는 두 개의 항목 (Bob 46 및 Bob 47) 대신 Bob 47이 Bob 47으로 업데이트됩니다.
희망 사항은 분명합니다. 그것. 기억해야 할 중요한 사항은 Viewstate를 사용하여 중계기를 채우는 컬렉션을 포함하기 때문에 업데이트 패널에서이 모든 일이 발생한다는 것입니다.
잘 모르겠습니다. 위에서 설명한 시나리오를 가정하면 사용자가 양식을 채우고 조회수를 저장하면 리피터가 데이터 바인딩됩니다 ... viewstate/다른 데이터 소스가 사용되지 않으면 정확히 무엇이 발생합니까? 나는 틀림없이 그것을 설명했을 것입니다. 그러나 만약 여러분이 폼이 어떤 하나의 앉아있는 곳에서 여러 번 채워질 것이라고 상상한다면, 예를 들어 Bob 46, John 23, Mary 55 등등이 모든 것들이 중계기의 데이터 소스에 추가 될 것입니다. viewstate/session이 사용되지 않는다면 (그리고 나는 아직 DB에 커밋하고 싶지 않다) 어떻게 할까? – scaryjones
@scaryjones UpdatePanel 때문에 ViewState를 _specifically_ 사용할 필요가 없다는 것을 의미하지만, 그렇지 않은 경우에는 필요에 따라 확실히 할 수 있습니다.Repeater 컨트롤을 사용하려는 경우 서버 측에서 ItemCommand 이벤트를 처리하여 버튼 클릭에 대한 모든 로직을 처리합니다. 이 핸들러에서 DB 백엔드가 아닌 콜렉션을 업데이트 할 수 있습니다. 즉, 당신은 ListView 또는 GridView 대신 Repeater를 사용하여 생각해 봤어? 논리가 좀 더 직관적 일 수 있습니다. – Andrew