【问题标题】:How to edit a gridview inside of a modal popup?如何在模式弹出窗口内编辑网格视图?
【发布时间】:2010-12-01 18:15:02
【问题描述】:

我有一个网格视图,它出现在动态生成的模式弹出窗口中,并绑定到动态生成的 SqlDataSource。

我这样做是希望利用 gridview 的自动编辑功能。

我的问题是,当单击编辑按钮时,尽管我的 gridview 位于更新面板中,但由于完整的回发,modalpopup 会关闭...

我查看了herehere 的解决方案,但都没有解决问题。我还尝试了关于 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()

【问题讨论】:

  • 哇,这还没有回答吗?我也有同样的问题!

标签: asp.net vb.net gridview modalpopupextender


【解决方案1】:

根据我的经验,ModalPopupExtender 将始终在回发时关闭,除非您在回发触发的事件中明确要求不要这样做:

    btnSubmitRequest_ModalPopupExtender.Show();

【讨论】:

  • 我不确定你的意思。我尝试连接到 gridview rowcommand 并在那里调用 mpLabels.Show 但它从未触发,因为我认为回发触发是因为回发首先触发并且数据源在发生这种情况时被重新绑定。此外,由于网格视图位于更新面板中,因此应该只发生部分回发,这应该防止模式弹出窗口消失。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-01
  • 2015-07-16
  • 2015-11-28
  • 2015-05-04
  • 1970-01-01
相关资源
最近更新 更多