在gridview中想实现这样的功能,点击一个textbox -txtInfo ,弹出 另一个textbox -txtDetInfo,在txtDetInfo输入值,然后点击button 将值返回给 txtInfo ,于是想用到了PopupControlExtender ,然后可以用,但是有回发特求救!!! 贴出部分代码 
 <asp:TemplateField HeaderText="产品介绍">
                    <ItemTemplate>
                        <asp:TextBox ID="txtInfo" runat="server"></asp:TextBox>
                        <cc1:PopupControlExtender ID="PopupControlExtender1" runat="server" 
                        TargetControlID="txtInfo" PopupControlID="plInfo" Position="Bottom" 
                         >
                        </cc1:PopupControlExtender>
                        <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
                            <ContentTemplate>
                                
                                <asp:Panel ID="plInfo" runat="server" Height="100%" Width="100%" >
                                    <asp:TextBox ID="txtInfoDet" runat="server" Height="400px" TextMode="MultiLine" 
                                        Width="300px" ></asp:TextBox>
                                    <asp:Button ID="btnPlOk" runat="server" onclick="btnPlOk_Click" Text="确定" 
                                        UseSubmitBehavior="False" />
                                    <asp:Button ID="btnPlCancel" runat="server" onclick="btnPlCancel_Click" 
                                        Text="取消" /> 
                                </asp:Panel>
                                                        
                            
                            </ContentTemplate>
                            <Triggers>
                                <asp:AsyncPostBackTrigger ControlID="btnPlOk" EventName="Click" />
                            </Triggers>
                        </asp:UpdatePanel>
                        <br />
                    </ItemTemplate>
    protected void btnPlOk_Click(object sender, EventArgs e)
    {
        Button btnPlOk = (Button)sender;
        GridViewRow gvr = (GridViewRow)btnPlOk.NamingContainer;
        TextBox txtInfoDet = (TextBox)gvr.FindControl("txtInfoDet");
        TextBox txtInfo = (TextBox)gvr.FindControl("txtInfo");
        txtInfo.Text = txtInfoDet.Text;        // PopupControlExtender1.Commit(txtInfoDet.Text); --找不到PopupControlExtender1    }

解决方案 »

  1.   

    PopupControlExtender应该放在GridView的外面,只要一个PopupControlExtender就可以了,这样就不会回发!!
    你现在这样有n个PopupControlExtender!!
      

  2.   

    感谢口口加一,只是如果把PopupControlExtender放在外面就会出现
    The TargetControlID of 'PopupControlExtender1' is not valid. A control with ID 'txtInfo' could not be found.  这样没办法设TargetControlID了
      

  3.   

    我想不是PopupControlExtender的提交问题,你看一下是否是GridView控件的ItemCommand事件的问题?
    try 着把Up...面板包括GridView看看
      

  4.   

    谢谢楼上的,试着给gridview加了一个updatepanle ,没有回发了。。却发现pl没有隐藏,在button里面点提交时,设了this.plInfo.Visible = false;发现能隐藏再次点击txtInfo时,panle -却显示不出来
      

  5.   

    这是经常碰到的问题!!
    解决方法是:
    1.加一个Button或LinkButton设置style="display:none",也即隐藏,
    2.PopupControlExtender的TargetControlID为以上的Button或LinkButton的ID
    3.显示Panel(弹出框)用:
      PopupControlExtender1.Show();