Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET ObjectDataSource自动绑定到Repeater-可能吗?_Asp.net_Repeater_Bind_Objectdatasource - Fatal编程技术网

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。