J'ai un gridview qui apparaît dans un popup modal qui est généré dynamiquement et est lié à un SqlDataSource généré dynamiquement.Comment modifier un gridview dans un popup modal?
Je l'ai fait pour profiter des capacités d'édition automatique du gridview.
Mon problème est que lorsque le bouton d'édition est cliqué sur le ModalPopup ferme en raison d'un postback complet malgré le fait que mon gridview est dans un panneau de mise à jour ...
Je regardai des solutions here et here mais ni fixé le problème. J'ai également essayé toutes les combinaisons sous le soleil en ce qui concerne le positionnement de ModalPopupExtender par rapport au panneau de mise à jour etc., et j'ai aussi essayé de changer le mode de mise à jour en conditionnel.
Markup:
<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>
code Derrière:
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()
Wow, ce n'est toujours pas répondu? J'ai le même problème! – jlg