Как редактировать вид сетки внутри модального всплывающего окна? - PullRequest
2 голосов
/ 01 декабря 2010

У меня есть сетка, которая появляется в модальном всплывающем окне, которое генерируется динамически и связано с динамически генерируемым 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()

1 Ответ

0 голосов
/ 01 декабря 2010

По моему опыту, ModalPopupExtender всегда будет закрываться при обратной передаче, если вы явно не попросите его не делать это в случае события, вызванного обратной передачей:

    btnSubmitRequest_ModalPopupExtender.Show();
...