2015-09-14 1 views
1

У меня есть пользовательский элемент управления, чтобы включить одиночный выбор из таблицы, которая содержит GridView внутри UpdatePanelGridView не изменяет выбранную строку после первого постбэка

<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> 

popup-content сНу показано с помощью диалога 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); 
} 

Это отлично работает в первый раз я открываю всплывающее окно. Со второго раза, если я ранее выбрал строку и подтвердил, что происходит, когда я нажимаю на строку, я не вижу выделенную выделенную строку. postback выполняется, и строка выбирается правильно на стороне сервера, потому что при сохранении выделения я вижу, что текстовое поле обновляется до нужного значения. Проблема в том, что клиент не отображает 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