[英]Getting edited data from Repeater control in asp.net
我有一個清單
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>
現在我正在通過編輯文本框日期選擇器進行更改,我認為中繼器會使用更新的數據自動修改數據源,但這並沒有發生。 有人可以告訴我如何在頁面提交時從轉發器中捕獲編輯后的值。
謝謝
您必須在回發時從中繼器中檢索數據。 為此,您需要使用 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 期間檢索它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.