Это зависит от того, являются ли элементы управления, которые вы хотите обновить, DataBound()
или нет.
Другими словами, можете ли вы принудительно перезагрузить элемент управления с помощью вызова метода DataBind()
, чтобы вызватьэлемент управления для перезагрузки, с теми же или новыми данными?Большинство элементов управления с графическим интерфейсом имеют метод DataBind()
, но бесполезно, если элемент управления на самом деле не использует данные для работы!
Вот почему в вашем случае ваша панель не "обновляется" новыми данными, потому что используется DataBind() на панели ничего не делает.Использование databind () для всего GridView - это отдельная история, и она должна работать.Может быть, разместить UPDATEPANEL вокруг всего участка?Если вам нужно, вы должны быть осторожны, ваши обычные правки и другие команды в строках продолжат работать.
Однако , то, что вы можете сделать, это поместить modalpopupextender
внутри вашего TemplateField
и, используя «трюк», вы можете удерживать почту на сервере и по-прежнему запускать всплывающую панель.
т.е.
<asp:UpdatePanel ID="upADDMAIN" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Button ID="btnADD" runat="server" Text="NEW LOGIN" BackColor="Blue" Font-Bold="True" ForeColor="#FFFFCC" OnClick="btnADD_Click" />
<asp:Button ID="btnDUM" runat="server" style="display:none" />
<div style="height:20px">
</div>
<ajaxToolkit:ModalPopupExtender ID="mpeADD" runat="server"
targetcontrolid="btnDUM"
popupcontrolid="upADD"
backgroundcssclass="modelbackground">
</ajaxToolkit:ModalPopupExtender>
<asp:UpdatePanel ID="upAdd" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Panel ID="pnlADD" runat="server" Width="700px" HorizontalAlign="Center" CssClass="auto-style10" Height="200px">
..
..
<div id="puFTR" class="auto-style17" style="vertical-align: middle">
<asp:Button id="btnOK" runat="server" Text="OK" style="width: 80px" OnClick="btnOK_Click" />
<asp:Button id="btnCAN" runat="server" Text="CANCEL" style="width: 80px" OnClick="btnCAN_Click" CausesValidation="False" />
</div>
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
</ContentTemplate>
</asp:UpdatePanel>
Как видите, элемент управления btnDUM
Пустышка, чтобы заставить MPE работать, но на самом деле он не используется, поскольку он скрыт тегом style="display:none"
.
Однако btnADD
работает, потому что он вызывает метод Click()
на стороне серверакоторый обновляет данные в вашей новой строке.Возможно, вам придется использовать небольшой jScript для передачи ROWINDEX
в метод Click (), чтобы он работал с GridView
.
Кстати, метод Click () в моем случае «контролирует»MPE вручную ...
protected void btnADD_Click(object sender, EventArgs e)
{
ClearADDform();
mpeADD.Show();
}
protected void ClearADDform()
{
txtLOGIN.Text = string.Empty;
cbISActive.Checked = true;
txtPWD.Text = string.Empty;
ddlAgent.SelectedIndex = -1;
}
В моем случае приведенный выше пример кода находится за пределами GridView, поэтому вам нужно будет его настроить.
Но дело в том, что вы все равно можете иметьЗвонки на стороне сервера с использованием всплывающих окон Ajax!
Удачи.