2015-09-14 50 views
1

后选择的行我有一个用户控制,以使从一个表,其中包含一个UpdatePanel的GridView不改变第一回发

<asp:UpdatePanel runat="server" ID="upSelection" UpdateMode="Conditional" ChildrenAsTriggers="false"> 
    <ContentTemplate> 
<asp:TextBox runat="server" ID="txtControlText" SkinID="M_Selection" ReadOnly="true"></asp:TextBox> 
    <asp:Button runat="server" ID="btnSelection" Text="..." CssClass="btnSelection" OnClick="btnSelection_Click" CausesValidation="false" /><asp:Panel runat="server" ID="popupSelection" CssClass="popup"> 
     <asp:UpdatePanel runat="server" ID="upSelectionPopup" UpdateMode="Conditional" class="updatePanel"> 
      <ContentTemplate> 
       <div class="popup-content"> 
        <asp:GridView ID="gvSelection" SelectedRowStyle-BackColor="#FFBCBC" runat="server" OnRowDataBound="gvSelection_RowDataBound"> 
        </asp:GridView> 
       </div> 
      </ContentTemplate> 
     </asp:UpdatePanel>   
       <asp:ImageButton runat="server" ID="btnSaveSelection" SkinID="Save" OnClick="btnSaveSelection_Click" CausesValidation="false" /></ContentTemplate></asp:UpdatePanel> 

在div popup-content内一个GridView单个选择经由jquery的对话框中显示时,我点击btnSelection并且当我点击btnSaveSelection时再次隐藏。 在弹出式关闭时,我使用选定的行信息更新文本框。

我使用绑定事件该行数据,使行选择,其中突出所选行

protected void gvSelection_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
     e.Row.Attributes["onclick"] = Page.ClientScript.GetPostBackClientHyperlink((GridView)sender, "Select$" + e.Row.RowIndex); 
} 

这工作我第一次打开弹出完美的罚款。从第二次,如果我以前选择了一行并确认,会发生什么情况是当我点击一行时,我看不到新选中的行突出显示。回发被执行,并且该行在服务器端被正确选择,因为在保存选择时,我看到文本框被更新为正确的值。问题在于客户端不会呈现突出显示更改的gridview。

请注意,如果我打开并关闭弹出窗口而未确认任何内容,则所有内容都可以正常工作,我会看到各个行在单击时突出显示。

这似乎是一个客户端呈现与select事件本身无关的问题,因为如果我启用分页,当有一个先前选择的行时,当我点击“下一个”按钮时,我看不到新页面。只有我从不确认任何事情,我才能看到其他页面。

的让人不安的事情是,如果我检查那个被发送到客户端的响应的内容,当我点击一排,里面我看到正确的table,即tr与背景颜色是我点击了一个。只是这不会呈现给客户端!

我试着将事件从RowDataBound更改为RowCreated;我尝试将OnSelectedIndexChanged事件附加到gridview,并在代码隐藏中强制执行upSelectionPopup.Update();,但是代码中和运行时期间的所有内容都看起来正确,直到我应该在浏览器中看到新的gridview为止,而我却没有。

任何想法?谢谢

回答

1

我认为这是由于update panel。内容面板尝试添加后

</ContentTemplate> 
      <Triggers> 
       <asp:PostBackTrigger ControlID="whicheverbuttonyouaredoing" /> 
      </Triggers> 
     </asp:UpdatePanel> 
+0

行选择通过客户端单击完成,我不想要完整的回发 – Piddu