c# - 从asp.net中的Repeater控件获取编辑数据
问题描述
我有一个清单
List<DashboardFinancialDates> financialDates = new List<DashboardFinancialDates>();
我将此列表绑定到转发器作为数据源
FinancialDates.DataSource = financialDates;
FinancialDates.DataBind();
这是我的中继器控制
<asp:Repeater ID="FinancialDates" runat="server">
<HeaderTemplate>
<table class="DashboardConfigTable">
<thead>
<tr>
<th>Month</th>
<th>Start Date</th>
<th>End Date</th>
</tr>
</thead>
<tbody>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td> <%# Eval("Month") %></td>
<td><input type="text" class="datepicker" value="<%# Eval("StartDate")%>" /></td>
<td><input type="text" class="datepicker" value="<%# Eval("EndDate")%>" /></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</tbody>
</table>
</FooterTemplate>
</asp:Repeater>
现在我正在通过编辑文本框 datepicker 进行更改,我在想中继器会使用更新的数据自动修改数据源,但这并没有发生。有人可以告诉我如何在页面提交时从转发器中捕获编辑后的值。
谢谢
解决方案
您必须在回发时从中继器中检索数据。为此,您需要使用 ASP.NET 控件来显示和编辑标记中的数据:
<ItemTemplate>
<tr>
<td>
<asp:Label ID="lbl" runat="server" Text='<%# Eval("Month") %>'></asp:Label></td>
<td>
<asp:TextBox ID="txtDateFrom" runat="server" CssClass="datepicker" Text='<%# Eval("StartDate")%>' /></td>
<td>
<asp:TextBox ID="txtDateTo" runat="server" CssClass="datepicker" Text='<%# Eval("EndDate")%>' /></td>
</tr>
</ItemTemplate>
回发后,您可以像这样检索数据:
private IEnumerable<Tuple<string, DateTime, DateTime>> GetUpdatedItems()
{
var lst = new List<Tuple<string, DateTime, DateTime>>();
var items = rpt.Items
.OfType<RepeaterItem>()
.Where(x => x.ItemType == ListItemType.Item
|| x.ItemType == ListItemType.AlternatingItem);
foreach (var item in items)
{
var month = ((Label)item.FindControl("lbl")).Text;
var dateFromStr = ((TextBox)item.FindControl("txtDateFrom")).Text;
var dateToStr = ((TextBox)item.FindControl("txtDateTo")).Text;
var dateFrom = DateTime.Parse(dateFromStr);
var dateTo = DateTime.Parse(dateToStr);
lst.Add(Tuple.Create(month, dateFrom, dateTo));
}
return lst.ToArray();
}
代码遍历Repeater 项并检索控件的值。
如果您需要项目的 id,您可以将 HiddenField 添加到 ItemTemplate 并在 PostBack 期间检索它。
推荐阅读
- python - 如何使用opencv python中的特征匹配在pcb中找到丢失的组件
- python - 无法使用 selenium 和 Python 将 PDF 从计算机上传到网络
- javascript - 在 Slick 滑块中单击时切换类
- c# - 抽象类继承属性始终为空
- sles - Chrony 设置中的时间未同步
- python - PyCharm:在区域上运行“black -S”
- javascript - 错误:拒绝获取不安全的标头“SourceMap”
- boost-asio - 在 Boost:asio 中,如何为任何特定活动保留一个线程
- mysql - 如何告诉gorm保存丢失的时间。时间字段为NULL而不是'0000-00-00'?
- python-3.x - 尝试使用 get-metric-statistics 从 Lambda 从 Cloudwatch 获取 CPU 利用率指标时响应为空