如何编辑模态弹出窗口内的gridview?

问题描述:

我有一个gridview出现在动态生成的模式弹出窗口中,并绑定到动态生成的SqlDataSource。如何编辑模态弹出窗口内的gridview?

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

我的问题是,当点击编辑按钮时modalpopup关闭是由于尽管事实证明我的GridView是一个更新面板完全回发...

我看了看解决方案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() 
+0

这个还没回答?我也有同样的问题! – jlg 2011-10-26 21:41:43

在我的经验中,ModalPopupExtender将始终紧贴回发,除非你明确地要求它不要在事件触发回邮:

btnSubmitRequest_ModalPopupExtender.Show(); 
+0

我不确定你的意思。我尝试挂钩GridView的rowcommand,并调用mpLabels.Show,但是它在回发后并没有解雇,因为回发是第一次触发的,当发生这种情况时数据源被重新绑定。另外,由于gridview位于更新面板中,因此只应发生部分回传,以防止模式弹出消失。 – plntxt 2010-12-01 18:49:38