У меня довольно прямолинейный Gridview, который тянет в набор узлов Umbraco. Я привязываю его к загрузке страницы.Проблемы с освещением Gridview с узлами Umbraco
Моя проблема возникает на RowCommand для удаления программы (узла). Код для удаления выполняется отлично. Программа (узел) удаляется из Umbraco. Тем не менее, независимо от того, что я пытаюсь, я не могу заставить GridView правильно обновляться. Удаленная запись по-прежнему доступна. Только жесткое обновление браузера очищает его.
После обработки обработка данных не была разрезана. Не было перенаправлено обратно на страницу. Я пробовал PermanentRedirect, который работает иногда, но не все.
<asp:GridView ID="gvPrograms" runat="server" CssClass="styledTable"
AllowPaging="true"
PageSize="5"
AutoGenerateColumns="false"
OnPageIndexChanging="gvPrograms_PageIndexChanging"
onrowcommand="gvPrograms_RowCommand"
onrowdatabound="gvPrograms_RowDataBound">
<rowstyle backcolor="White"
forecolor="#006296"
font-italic="false"/>
<alternatingrowstyle backcolor="#dbeef9"
forecolor="#006296"
font-italic="false"/>
<Columns>
<asp:BoundField DataField="Name" HeaderText="Program Name" />
<asp:TemplateField HeaderText="Date">
<ItemTemplate>
<asp:Label ID="lblProgramDate" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lnkEdit" runat="server" Text="Edit"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lnkRemove" runat="server" Text="Remove"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
protected void gvPrograms_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Edit Program")
{
PopulateProgram(e.CommandArgument.ToString());
displayPanels(pnlAddProgram);
hdrEdit.InnerText = "Edit Program";
}
else if (e.CommandName == "Remove Program")
{
int id = Int32.Parse(e.CommandArgument.ToString());
//remove node from umbraco
Document d = new Document(id);
//umbraco.library.UnPublishSingleNode(id);
d.delete();
umbraco.library.UpdateDocumentCache(d.Id);
umbraco.content.Instance.RefreshContentFromDatabaseAsync();
umbraco.library.RefreshContent();
lblMsg.Text = "The program has been successfully removed!";
lblMsg.Visible = true;
Response.RedirectPermanent("/chapter-tools/chapter-management-center/chapter-content-admin/programs-list.aspx");
//BindData(programsNodeID);
}
}
private void BindData(string programsNodeID)
{
DataTable dt = new DataTable();
Node programsNode = new Node(Convert.ToInt32(programsNodeID));
dt = programsNode.ChildrenAsTable();
gvPrograms.DataSource = dt;
gvPrograms.DataBind();
if (gvPrograms.Rows.Count > 0)
lblNone.Visible = false;
else
lblNone.Visible = true;
}
Я не уверен, но я думаю, что у меня была такая же проблема при выполнении импорта, проверяя существующие элементы на основе nodeFactory. Я думал, что заметил небольшую задержку (1 или 2 секунды) после добавления/удаления элемента и обновления umbraco.config. Возможно, это то, что вы испытываете ... –
Возможно. Но я должен разобраться в работе, так как это создает довольно ужасный пользовательский интерфейс. – JGrimm
@JGrimm: Как выглядит ваш код привязки данных? –