2013-05-27 70 views
0

我有以下代碼在datalist中的服務器文件夾上顯示圖像。 在CS:綁定圖像dynamicaly到datalist

if (!IsPostBack) 
    { 
     DirectoryInfo dir = new DirectoryInfo(MapPath("~/ajax _main/testpages/images/")); 
     FileInfo[] files = dir.GetFiles(); 
     ArrayList list = new ArrayList(); 
     foreach (FileInfo oItem in files) 
     { 
      if (oItem.Extension == ".jpg" || oItem.Extension == ".jpeg" || oItem.Extension == ".gif") 
       list.Add(oItem); 
     } 
     DataList1.DataSource = list; 
     DataList1.DataBind(); 
    } 

和ASPX:

<asp:DataList ID="DataList1" runat="server" RepeatColumns="10" CellPadding="5"> 
<ItemTemplate> 
<asp:Image Width="20" Height="20" ID="Image1" ImageUrl='<%# Bind("Name", "~/ajax _main/testpages/images/{0}") %>' runat="server" /> 
<br /> 
<asp:HyperLink ID="HyperLink1" Text='<%# Bind("Name") %>' NavigateUrl='<%# Bind("Name", "~/ajax _main/testpages/images/{0}") %>' runat="server"/> 
</ItemTemplate> 
<ItemStyle BorderColor="silver" BorderStyle="dotted" BorderWidth="3px" HorizontalAlign="Center" 
VerticalAlign="Bottom" /> 
</asp:DataList> 

我想給動態的URL在兩個文件中。我無法在aspx中完成。

+0

你想在客戶端或服務器端動態綁定? –

+0

你還沒有告訴我們什麼是不行的。向我們提供任何可能有助於我們排除故障的錯誤或其他信息。如果渲染錯誤,請將呈現給客戶端的HTML樣本包含在內。 – Richard

+0

此代碼工作正常。但我想用一個字符串給路徑。像字符串str =「〜/」+ txt1.Text +「/」。如何在aspx中做同樣的事情。用戶將在文本框中輸入數據,並根據該數據顯示圖像 – Shanna

回答

0

您可以使用更新面板以及在修改文本框的值時調用的JS函數。首先,在後面的代碼,還負責管理AJAX回傳和修改綁定方法如下:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     Bind(""); 
    } 
    else 
    { 
     Bind(tb.Text); 
    } 
    SetFocus(tb); 
} 

private void Bind(string searchPattern) 
{ 
    if (searchPattern == "") 
     searchPattern = "*"; 
    DirectoryInfo dir = new DirectoryInfo(MapPath("~/ajax _main/testpages/images/")); 
    FileInfo[] files = dir.GetFiles("*" + searchPattern + "*.*"); 
    ArrayList list = new ArrayList(); 
    foreach (FileInfo oItem in files) 
    { 
     if (oItem.Extension == ".jpg" || oItem.Extension == ".jpeg" || oItem.Extension == ".gif") 
      list.Add(oItem); 
    } 
    DataList1.DataSource = list; 
    DataList1.DataBind(); 
} 

的.aspx文件,創建tbUp JS功能,包裝在一個更新面板您的內容,添加文本框與OnKeyUpOnFocus客戶端事件處理程序:

<head runat="server"> 
    <title></title> 
    <script type="text/javascript"> 
     function tbUp() { 
      __doPostBack('<%= up.UniqueID %>', ''); 
     } 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <asp:ScriptManager runat="server"></asp:ScriptManager> 
     <div> 
      <asp:UpdatePanel runat="server" ID="up"> 
       <ContentTemplate> 
        <asp:TextBox runat="server" ID="tb" 
         OnKeyUp="javascript:tbUp();" 
         OnFocus="this.value=this.value;"> 
        </asp:TextBox> 
        <asp:DataList ID="DataList1" runat="server" 
         RepeatColumns="10" CellPadding="5"> 
         <ItemTemplate> 
          <asp:Image Width="20" Height="20" 
           ID="Image1" 
           ImageUrl='<%# Bind("Name", "~/ajax _main/testpages/images/{0}") %>' 
           runat="server" /> 
          <br /> 
          <asp:HyperLink ID="HyperLink1" 
           Text='<%# Bind("Name") %>' 
           NavigateUrl='<%# Bind("Name", "~/ajax _main/testpages/images/{0}") %>' 
           runat="server" /> 
         </ItemTemplate> 
         <ItemStyle BorderColor="silver" BorderStyle="dotted" BorderWidth="3px" HorizontalAlign="Center" 
          VerticalAlign="Bottom" /> 
        </asp:DataList> 
       </ContentTemplate> 
      </asp:UpdatePanel> 
     </div> 
    </form> 
</body>