2008-09-09 47 views
1

我有一個問題類:ASP.NET ObjectDataSource自動綁定到Repeater - 可能嗎?

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

現在我把這些可用的ICollection的通過ObjectDataSource控件,並使用綁定到數據源中繼器顯示出來。我使用<%#Eval(「Question」)%>來顯示問題,並使用TextBox和<%#Bind(「Answer」)%>接受答案。

如果我的ObjectDataSource返回三個Question對象,那麼我的Repeater會在每個問題後面顯示帶有TextBox的三個問題,以供用戶提供答案。

到目前爲止它效果很好。

現在我想要接受用戶的回答,並將其放回相關的問題類中,然後我將堅持。

當然框架應該照顧所有這些對我來說?我已經使用了綁定方法,我已經指定了一個DataSourceID,我在ObjectDataSource類中指定了一個Update方法,但似乎沒有辦法實際開始整個事情。

我試着在調用MyDataSource.Update()的代碼中添加一個Command按鈕,但它試圖調用我的Update方法而不使用參數,而不是它期望的Question參數。

當然,有一個簡單的方法來實現所有這些很少或沒有代碼隱藏?

看起來好像所有的東西都在那裏,但是缺少一些粘合劑將它們粘在一起。

幫助!

安東尼

回答

1

你必須處理回發事件(按鈕點擊或其他),然後枚舉該轉發器的項目是這樣的:

foreach(RepeaterItem item in rptQuestions.Items) 
{ 
    //pull out question 
    var question = (Question)item.DataItem; 
    question.Answer = ((TextBox)item.FindControl("txtAnswer")).Text; 

    question.Save() ? <--- not sure what you want to do with it 
} 
+0

DataItem始終爲空,所以這是無效的。 – paulwhit 2009-03-20 21:26:31

0

那麼什麼是在Bind方法點(而不是在Eval方法)如果我必須手動綁定所有東西回發?

1

bind方法確實不適用於中繼器,它更適用於formview或gridview,您只需編輯列表中的一個項目而不是列表中的每個項目。

在這兩個你點擊一個編輯按鈕,然後給你綁定控件(綁定使用綁定),然後點擊保存鏈接自動將項目保存到您的數據源沒有任何代碼後面。

相關問題