У меня есть простая панель обновления, которая содержит ASP DataList.Показывает список документов и статус их утверждения.Вот пример разметки
<asp:UpdatePanel ID="upDocuments" runat="server" UpdateMode="Always">
<ContentTemplate>
<asp:DataList ID="dlDocuments" runat="server" RepeatLayout="Table">
<HeaderTemplate>
<table cellpadding="0" cellspacing="0" style="width:100%;">
<thead>
<th><span style="font-size:110%;">User Documents</span></th>
<th></th>
<th></th>
<th></th>
</thead>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<asp:HyperLink ID="lnkDocName" runat="server" /></td>
<td>
<asp:Label ID="lblDocType" runat="server" /></td>
<td>
<asp:Label ID="lblApproved" runat="server" /></td>
<td>
<asp:LinkButton ID="btnApprove" runat="server" Visible="false" Text="Approve" />
<asp:Label ID="lblApprovedBy" runat="server" /></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:DataList>
</ContentTemplate>
</asp:UpdatePanel>
В моем коде есть подпрограмма, вызванная из Page_Load, чтобы получить данные и связать их с DataList.Вот соответствующие строки.
// Load the documents - loaded to docList (List<Document>)
dlDocuments.DataSource = docList;
dlDocuments.DataBind();
Пока все отлично.Затем, во время обработчика привязки элемента DataList, я связываю элемент управления btnApprove с обработчиком, чтобы загрузить документ и утвердить его.
if (!doc.Approved)
{
LinkButton btnApprove = (LinkButton)e.Item.FindControl("btnApprove");
btnApprove.Click += new EventHandler(btnApprove_Click);
btnApprove.Attributes.Add("docKey", doc.docKey);
btnApprove.Visible = true;
}
Затем
protected void btnApprove_Click(object sender, EventArgs e)
{
LinkButton btnApprove = (LinkButton)sender;
int docKey = Int32.Parse(btnApprove.Attributes["docKey"]);
Document doc = // Load document
doc.Approved = true;
doc.ApprovedBy = Page.User.Identity.Name;
doc.ApprovedDate = DateTime.Now;
// Save doc back to DB
LoadUserDocuments();
}
Опять все отлично,Я загружаю страницу, вижу документы и их статус и ссылки.Мой тестовый пример выглядит следующим образом:
- Загрузить страницу
- Нажмите «Одобрить» для первого документа.
- Убедитесь, что он утвержден.
- Нажмите «Одобрить» для второго документа.
- Убедитесь, что он утвержден.
Мой тест не пройден на шаге 5. Я отладил и вызвал обработчик кликов, DataListпривязывается к результатам, и документ сохраняется в базе данных в соответствии с утверждением.Однако страница никогда не обновляется, чтобы показать обновленный статус второго документа.Кто-нибудь знает, какой шаг я пропускаю в посте назад, что приводит к сбою последующих постов?