Вот сценарий:
Внутри UpdatePanel есть повторитель, называемый updPanel.
Внутри этого повторителя есть две кнопки, которые запускают ItemCommand.
Взагрузка страницы У меня есть этот метод:
if (!IsPostBack)
{
Bind();
}
Затем при Bind ():
public void Bind()
{
rptList.DataSource = Model.GetData(Version);
rptList.DataBind();
}
Затем при событии ItemCommand:
public void rptList_ItemCommand(object source, RepeaterCommandEventArgs e)
{
//Some code to get info about the DataItems
if (e.CommandName.Equals("MyCommandName1"))
{
//Do Stuff
}
else if (e.CommandName.Equals("MyCommandName2"))
{
//Do Other Stuff
}
Bind();
}
У меня естькнопка (внутри той же панели обновления, но за пределами повторителя), которая не выполняет ничего, кроме Bind ().
Когда я нажимаю ItemCommand, команда выполняется, но экран не обновляется (одна из кнопок элемента должнаизменить его значок после нажатия).Если я обновлю страницу или нажму кнопку «Привязать», повторитель покажет данные, как и ожидалось.
Почему они не привязываются после ItemCommand?
Заранее спасибо!
РЕДАКТИРОВАТЬ: Мой репитер:
<asp:Repeater ID="rptList" runat="server">
<HeaderTemplate>
<h3>
<b class="rollback">Rollback</b> | <b class="emteste">Em Teste</b> | <b class="aindanaoincluido">
Ainda não Incluído</b> | <b class="parcialmenteok">Atividade Parcialmente OK</b>
| <b class="todosok">Atividade OK em Todas as Lojas</b> | <b class="publicado">Atividade
Publicada</b>
</h3>
</HeaderTemplate>
<ItemTemplate>
<div class="item" style="display: inline-block">
<p style="font-size: 12px">
<asp:ImageButton ToolTip="Marcar como Rollback" ImageUrl="/_layouts/Extensions/Versioning/img/rollback.png"
CommandName="MarkAsRollback" ID="btnItemRollback" CssClass="itembutton" runat="server" />
<asp:ImageButton ToolTip="Esta atividade possui código. Clique para sinalizar como apenas procedure/config"
ImageUrl="/_layouts/Extensions/Versioning/img/code.png" CommandName="MarkAsProc"
ID="btnItemProc" CssClass="itembutton" runat="server" />
<asp:Image ToolTip="Esta atividade não possui scripts de banco/zips." ImageUrl="/_layouts/Extensions/Versioning/img/noscript.png"
runat="server" CssClass="itembutton" ID="btnItemScript" />
<asp:Label ID="labelWI" Text="" runat="server"></asp:Label>
<span style="color: #4A82CB">
<%# DataBinder.Eval(Container.DataItem, "SystemAssignedTo") %>
- </span><span style="color: Navy">
<%# DataBinder.Eval(Container.DataItem, "SystemTitle") %>
</span>
<asp:HiddenField ID="workItemID" runat="server" />
</p>
</div>
<hr class="item" noshade style="color: #4CBDCB; height: 2px; background-color: #4CBDCB" />
</ItemTemplate>
</asp:Repeater>
РЕДАКТИРОВАТЬ: Чтобы упростить это поведение, которое я получаю:
Нажав на кнопку за пределами ретранслятора: Значок меняется.Обновления БД.
Нажатие на кнопку внутри элемента в повторителе: Значок не изменяется.Обновления БД.
Повторное нажатие на кнопку внутри элемента в повторителе: Значок меняется.Обновления БД.Но теперь соответствующий пункт не так, потому что я уже снова поменял флаг
Кажется, это связано с порядком, в котором происходят вещи.
РЕДАКТИРОВАТЬ: Я забыл упомянуть, я тестировал с полной обратной передачей, и все работает нормально.