2008-09-09 7 views
1

질문 클래스가 있습니다 :리피터에 자동 바인딩되는 ASP.NET ObjectDataSource - 가능합니까?

class Question { 
    public int QuestionNumber { get; set; } 
    public string Question { get; set; } 
    public string Answer { get; set; } 
} 

이제 ObjectDataSource를 통해 사용할 수있는 ICollection을 만들고 Repeater를 사용하여 DataSource에 바인딩하여 표시합니다. 나는 질문을 표시하기 위해 < % # Eval ("Question") %>을 사용하고, 답변을 수락하기 위해 TextBox와 < % # Bind ("Answer") %>을 사용합니다.

내 ObjectDataSource가 3 개의 Question 객체를 반환하면 Repeater는 사용자가 대답을 제공 할 때마다 각 질문에 이어 TextBox로 세 가지 질문을 표시합니다.

지금까지 훌륭하게 작동합니다.

이제 사용자의 응답을 받아서 관련 Question 클래스로 되돌리고 싶습니다.

확실히 프레임 워크가이 모든 것을 처리해야합니다. Bind 메서드를 사용하고 DataSourceID를 지정 했으므로 ObjectDataSource 클래스에 Update 메서드를 지정했지만 실제로 모든 것을 킥 스타트 할 수있는 방법은 없습니다.

Command 단추를 추가하고 MyDataSource.Update()를 호출하는 코드에서 추가했지만 Update 매개 변수가 아니라 Question 매개 변수가 아니라 Update 메서드를 호출하려고합니다.

코드 숨김이 거의 없거나 전혀없는 상태에서이 모든 것을 달성하는 쉬운 방법이 있습니까?

모든 비트가 거기에있는 것처럼 보이지만 모두 함께 붙어 있지 않은 접착제가 있습니다.

도와주세요!

안소니

답변

1

당신은 다음과 같이 리피터 항목을 열거 다시 게시 이벤트 (버튼 클릭 또는 무엇이든)을 처리해야 Eval 메서드) 다시 게시 할 때 수동으로 모든 것을 다시 바인딩해야합니까?

+0

DataItem은 항상 null이므로 유효하지 않습니다. – paulwhit

+0

리피터를 어떻게 바인딩 하시겠습니까? DataItem은 null이 아니어야합니다. –

0

을 반대로 (바인딩 방법의 요점 그리고 무엇 :

앤서니

1

바인딩 방법은 실제로 리피터가 아닙니다. 목록의 모든 항목이 아닌 하나의 항목 만 편집하는 formview 또는 gridview에 더 적합합니다.

모두 편집 단추를 클릭 한 다음 바운드 컨트롤 (바인딩을 사용하여 바운드 됨)을 제공 한 다음 저장 링크를 클릭하면 자동으로 항목이 코드 숨김없이 데이터 소스에 다시 저장됩니다.