У меня есть сетка, которая появляется в модальном всплывающем окне, которое генерируется динамически и связано с динамически генерируемым SqlDataSource.
Я сделал это, чтобы, надеюсь, воспользоваться возможностями автоматического редактирования gridview.
Моя проблема в том, что при нажатии кнопки редактирования модалпопап закрывается из-за полной обратной передачи, несмотря на то, что мой gridview находится в панели обновления ...
Я смотрел на решения здесь и здесь , но ни одна из них не устранила проблему.Я также попробовал каждую комбинацию под солнцем в отношении позиционирования ModalPopupExtender относительно панели обновлений и т. Д., И попытался изменить UpdateMode на условный.
Разметка:
<span class="none"><asp:Button ID="btnDummy" runat="server" Text="Dummy" /></span>
<ajax:ModalPopupExtender ID="mpLabel" runat="server" TargetControlID="btnDummy" BackgroundCssClass="modalBackground" PopupControlID="pnlLabels"></ajax:ModalPopupExtender>
<asp:Panel ID="pnlLabels" DefaultButton="btnOk" Style="display:none;" runat="server">
<div style="background-color:#fff;border:1px solid black;padding:7px;">
<asp:UpdatePanel ID="upLabels" runat="server" ChildrenAsTriggers="true" EnableViewState="true" UpdateMode="Always">
<ContentTemplate>
<asp:Panel ID="pnlGv" runat="server" style="max-height:420px;width:700px;border-bottom:1px #ccc solid;" ScrollBars="Vertical">
<asp:PlaceHolder ID="phLabelInfo" runat="server"></asp:PlaceHolder>
<asp:PlaceHolder ID="phSDS" runat="server"></asp:PlaceHolder>
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
<asp:Button ID="btnOk" runat="server" Text="Ok" />
</div>
</asp:Panel>
Код сзади:
Dim sdsLabels As New SqlDataSource
sdsLabels.ID = "sdsLabels"
sdsLabels.ConnectionString = System.Configuration.ConfigurationManager.AppSettings.Get("Generic Connection String")
sdsLabels.ProviderName = "System.Data.SqlClient"
sdsLabels.DeleteCommand = "DELETE FROM [JS_LABELS] WHERE [LABELID] = @LabelId"
sdsLabels.SelectCommand = "SELECT [LABELID], [CIRCUITNUMBER], [PANELNUMBER], [ADDITIONAL1], [ADDITIONAL2], [ADDITIONAL3] FROM [JS_LABELS] WHERE [QUOTEITEMID] = @QuoteItemId"
sdsLabels.UpdateCommand = "UPDATE [JS_LABELS] SET [CIRCUITNUMBER] = @CircuitNumber, [PANELNUMBER] = @PanelNumber, [ADDITIONAL1] = @Additional1, [ADDITIONAL2] = @Additional2, [ADDITIONAL3] = @Additional3 WHERE [LABELID] = @LABELID"
sdsLabels.SelectParameters.Add(New Parameter("QuoteItemId", Data.DbType.Int32, e.CommandArgument.ToString()))
sdsLabels.DeleteParameters.Add(New Parameter("LabelId", Data.DbType.Int32))
Dim paramCollection As New ParameterCollection
paramCollection.Add("CircuitNumber", Data.DbType.String, "")
paramCollection.Add("PanelNumber", Data.DbType.String, "")
paramCollection.Add("Additional1", Data.DbType.String, "")
paramCollection.Add("Additional2", Data.DbType.String, "")
paramCollection.Add("Additional3", Data.DbType.String, "")
paramCollection.Add("LabelId", Data.DbType.Int32, "0")
Dim ph As New PlaceHolder
ph = CType(PageHelper.RecursiveFindControl(Page, "phSDS"), PlaceHolder)
ph.Controls.Add(sdsLabels)
Dim gv As New GridView
ph = CType(PageHelper.RecursiveFindControl(Page, "phLabelInfo"), PlaceHolder)
ph.Controls.Add(gv)
gv.CssClass = "LabelsTable"
Dim LabelId() As String = {"LabelId"}
gv.DataKeyNames = LabelId
gv.EnableViewState = True
gv.AutoGenerateEditButton = True
AddHandler gv.RowCommand, AddressOf gv_rowCommand
gv.DataSourceID = sdsLabels.ID
gv.DataBind()
mpLabel.Show()