2014-11-02 3 views
0

Я пытаюсь решить эту проблему. У меня есть Аккордеон внутри UpdatePanel. Внутри элемента управления Accordion я динамически создаю не более четырех AccordionPanes, каждый из которых имеет пользовательский ListView, который показывает некоторые предварительные просмотры изображений, извлеченные из базы данных. Каждый предварительный просмотр состоит из 160x120 ImageButton. Когда пользователь нажимает на одну из этих кнопок, всплывающее окно открывается с изображением реального размера (с помощью элемента управления Seadragon); теперь он может поворачивать изображение и сохранять его обратно в базу данных. Теперь, после сохранения изображения, я закрываю всплывающее окно и отправляю обратную передачу, создавая событие click на скрытой кнопке внутри UpdatePanel, содержащей Accordion, но даже если я могу пройти через код скрытой кнопки, обновление не требуется место. Скрытая кнопка была последним (и самым эффективным) решением, которое я пробовал, без успеха. Что мне не хватает? (Абсолютным лучшим решением было бы обновление единственного изображения, которое изменилось, потому что иногда ListView содержит несколько превью).пользовательский ListView внутри панели обновления не обновляется

Это

<div> 
    <table class="style8"> 
     <tr> 
      <td class="style2"> 
       <asp:UpdatePanel ID="usersPanel" runat="server" > 
        <ContentTemplate> 
         <cc1:c1treeview ID="tvUsers" runat="server" 
          onselectednodeschanged="tvUsers_SelectedNodesChanged" AutoPostBack="True" 
          onnodecheckchanged="tvUsers_SelectedNodesChanged"> 
         </cc1:c1treeview> 
        </ContentTemplate> 
       </asp:UpdatePanel> 
       <asp:UpdatePanel ID="imagesPanel" runat="server" UpdateMode="Always" > 
        <ContentTemplate> 
         <asp:Button ID="hiddenImageRefresh" runat="server" Text="Refresh" 
        style="display:none;" onclick="hiddenImageRefresh_Click" /> 
         <ajaxToolkit:Accordion ID="accImages" runat="server" > 
         </ajaxToolkit:Accordion> 
        </ContentTemplate> 
       </asp:UpdatePanel> 
      </td> 
     </tr> 
    </table> 
</div> 

И это код, содержащийся в скрытом события нажатия кнопки, код, который регулярно работает, когда всплывающее окно закрывается. Он просто извлекает код пользователя (промо) и повторно связывать данные (LoadImages)

protected void hiddenImageRefresh_Click(object sender, EventArgs e) 
    { 
     string promo = ""; 

     if(Session[SessionVariables.CurrentPromoter] != null) 
      promo = Session[SessionVariables.CurrentPromoter].ToString(); 

     LoadImages(promo, ddlImageType.SelectedValue); 
    } 
+0

Как вы запуска кнопки мыши? поставить точку останова в методе 'hiddenImageRefresh_Click' кода и проверить, получаете ли вы контроль в стороне или нет. –

+0

Нажатие кнопки запускается клиентским скриптом во всплывающем окне. Ниже приведен код в кнопке сохранения: – Rodolfo

+0

protected void bSave_Click (отправитель объекта, EventArgs e) { SaveImage(); ClientScriptManager csm = Page.ClientScript; csm.RegisterStartupScript (Page.GetType(), "closeScript", "closePopup (true);", true); \t \t} – Rodolfo

ответ

0

шагов, чтобы обновить только обновленный образ

Шаг № 1: в JavaScript

//Take one global variable 
var selectedImageId=""; 

Шаг № 2: в JavaScript

//set above var with image id, When user clicks on the ImageButton, which is inside openPopup function 
selectedImageId = this.id; 

Шаг № 3: в Code-Behind

protected void bSave_Click(object sender, EventArgs e) { 
    //SaveImage(); 

    #region here get the imageUrl that needs to be updated and send as parameter in closePopup js function 

    var timeStamp = dImgTag.ToString("yyyyMMdd HH:mm:ss.fff") ; 
    var promoter = riga["PROMOTER"].ToString(); 
    var pv = riga["PV"].ToString(); 
    var imageUrl = string.Format("../Handlers/ImageLoader.ashx?id={0}&promo={1}&pv={2}", timeStamp, promoter, pv); 

    #endregion 

    ClientScriptManager csm = Page.ClientScript; 
    csm.RegisterStartupScript(Page.GetType(), "closeScript", "closePopup(true,'"+ imageUrl +"');", true); 
} 

Шаг № 4: в JavaScript

function closePopup(refreshParent, imageUrl) { 
    if (refreshParent) { 
     //get the selectedImage and set the source with new url 
     var selectedImage = window.opener.document.getElementById(selectedImageId); 
     selectedImage.src = imageUrl; 
    } 
    window.close(); 
} 
Смежные вопросы