ASP.NET ObjectDataSource自动绑定到Repeater-可能吗?
我有一个问题课:ASP.NET ObjectDataSource自动绑定到Repeater-可能吗?,asp.net,repeater,bind,objectdatasource,Asp.net,Repeater,Bind,Objectdatasource,我有一个问题课: class Question { public int QuestionNumber { get; set; } public string Question { get; set; } public string Answer { get; set; } } 现在,我通过ObjectDataSource提供了这些内容的ICollection,并使用绑定到数据源的转发器显示它们。我使用显示问题,并使用文本框和接受答案 如果我的ObjectDataSou
class Question {
public int QuestionNumber { get; set; }
public string Question { get; set; }
public string Answer { get; set; }
}
现在,我通过ObjectDataSource提供了这些内容的ICollection,并使用绑定到数据源的转发器显示它们。我使用显示问题,并使用文本框和接受答案
如果我的ObjectDataSource返回三个问题对象,那么我的Repeater将显示这三个问题,每个问题后面都有一个文本框,供用户提供答案
到目前为止效果很好
现在我想把用户的回答放回相关的问题类中,然后我会坚持下去
当然,框架应该为我解决所有这些问题?我使用了Bind方法,我指定了DataSourceID,我在ObjectDataSource类中指定了Update方法,但似乎没有办法真正启动整个过程
我尝试添加一个命令按钮,并在调用MyDataSource.Update()的代码中,但它尝试调用我的更新方法,但没有参数,而不是它所期望的问题参数
当然,有一种简单的方法可以在几乎没有代码隐藏的情况下实现所有这些
看起来所有的碎片都在那里,但是缺少一些胶水把它们粘在一起
救命啊
Anthony您必须处理回发事件(按钮单击或其他),然后按如下方式枚举转发器项:
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
}
foreach(rptQuestions.Items中的RepeaterItem项)
{
//引出问题
变量问题=(问题)项.DataItem;
问答=((文本框)item.FindControl(“txtAnswer”)).Text;
问题.Save()?那么,如果我必须在回发时手动将所有内容绑定备份,那么绑定方法(与Eval方法相反)有什么意义呢?绑定方法实际上不适用于重发器,它更适用于formview或gridview,您只编辑列表中的一个项目,而不是列表中的所有项目
在两者上,单击一个编辑按钮,该按钮将为您提供绑定控件(使用绑定绑定绑定),然后单击保存链接,该链接将自动将项目保存回您的数据源,而无需任何代码。Ben:尝试过之后,item.DataItem始终为空,根据以下帖子,它不是设计用于这种方式:
那么,我到底该如何手动将其绑定回去呢?DataItem始终为null,因此这是无效的。如何绑定中继器?DataItem不应为null。