【问题标题】:Cast ASP Repeater DataSource to C# List将 ASP 中继器数据源转换为 C# 列表
【发布时间】:2012-06-08 08:32:25
【问题描述】:

我有一个名为 rptFoo 的中继器和一个名为 listFoo 的 C# List<String>。 我只知道可以指定一个List作为repeaterDataSource,像这样:

rptFoo.DataSource = listFoo
rptFoo.DataBind();

这个转发器被渲染到文本框,然后我对文本框的文本进行了一些更改。 我可以反过来得到列表吗?我的意思是,当 数据在我的转发器项目的某个文本框上发生更改 时,我可以将它分配给我的 C# 列表,如下所示:

listFoo = DataSource

我正在寻找比通过foreach 逐个访问中继器项目更好的东西。 有什么想法吗?

我就是这样做的:

foreach (RepeaterItem item in rptFoo.Items)
{
  TextBox myTextBox= (TextBox)item.FindControl("myTextBox");
  listFoo[item.ItemIndex] = myTextBox.Text;
}

我想在我的转发器上获取任何已编辑的数据以反映在我的列表中。

提前致谢

【问题讨论】:

  • 这种类型的代码需要什么?你对rptFoo数据做了一些改变吗?
  • 我不认为这是可能的,因为转发器的数据源在回发后为空,当然您可以在同一往返中转换 DataSource,但这没有用,因为没有任何改变。我认为正确的方法是附加到真正改变您的数据并适当修改您的列表的事件。
  • 哦,是的,我忘了告诉我我已经对我的中继器项目进行了一些更改
  • 我认为如果您自动更改某些内容,这会反映到您的列表中(并且不需要使 listFoo=datasource - 请检查一下。
  • @Aristos 这不会发生。 DataBinding 是单向的:你不能简单地从转发器中拉出一个列表,它当然不会自动发生。

标签: c# asp.net repeater


【解决方案1】:

比遍历每个重复项并找到文本框更好的方法可能是利用 TextBox 控件的 OnTextChanged 事件处理程序。这将使您可以直接访问 TextBox 对象和它的新值。

【讨论】:

    猜你喜欢
    • 2017-12-23
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-05
    • 1970-01-01
    • 1970-01-01
    • 2012-04-07
    相关资源
    最近更新 更多