2017-05-10 25 views
0

代碼更新圖像的URL我有這個頁面:如何動態地從後面

<form id="form1" runat="server"> 
    <asp:Image id="imgLogo" runat="server" /> 

    <div class="content"> 
     <asp:ScriptManager ID="scrptMan" runat="server"></asp:ScriptManager> 
     <asp:UpdatePanel ID="updChooser" runat="server"> 
      <ContentTemplate> 
       <h3>Company name</h3> 
       <asp:DropDownList ID="ddCompany" runat="server" DataTextField="CompanyName" DataValueField="Id" AutoPostBack="true" OnSelectedIndexChanged="ddCompany_OnSelectedIndexChanged"></asp:DropDownList> 
       <h3>Year</h3> 
       <asp:DropDownList ID="ddYear" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddYear_OnSelectedIndexChanged"></asp:DropDownList> 
       <asp:Literal ID="ltAdvice" runat="server"></asp:Literal> 
       <strong><asp:Literal ID="ltYear" runat="server"></asp:Literal></strong> 
       <asp:Panel ID="pnlNext" runat="server" Visible="false"> 
        <div class="submit"> 
         <asp:Button ID="btnNext" runat="server" Text="Next" CssClass="button" OnClick="btnNext_OnClick"/> 
        </div> 
       </asp:Panel> 
      </ContentTemplate> 
     </asp:UpdatePanel> 
    </div> 
</form> 

我要動態更新從代碼標誌形象的背後,如果用戶選擇的公司,這樣的

private void FillLogo(int companyId) 
    { 
     //temporary 

     byte[] logo = File.ReadAllBytes(@"D:\temp\images\baseLogo.png"); 

     if (clientId > 0 && File.Exists(@"D:\temp\images\companies\" + companyId + ".png")) 
     { 
      logo = File.ReadAllBytes(@"D:\temp\images\companies\" + companyId+ ".png"); 
     } 

     imgLogo.ImageUrl = "data:image/jpeg;base64," + Convert.ToBase64String(logo); 
    } 

我在ddCompany_OnSelectedIndexChanged方法中調用此方法,並在具有正確的公司ID的OnPreRender方法中調用此方法,但第一次加載徽標並且ddCompany中的任何更改都不會更新。 完全可以實現?

回答

0

這可能是因爲您的圖像控件不在更新面板內。面板的要點是隻更新頁面的一部分 - >裏面有什麼。

嘗試移動更新面板中的圖像控件,或者可能有一個設置可以添加到更新面板中...'conditional'?或者可能是相反的,現在還不確定。看看它是否能與面板內的圖像一起工作。

[想知道:你不能只是做imgLogo.ImageUrl = @"D:\temp\images\companies\" + companyId+ ".png";]