将图像动态绑定到datalist

时间:2013-05-27 08:28:39

标签: c# asp.net datalist

我有以下代码在datalist中的sever文件夹上显示图像。 在cs:

    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中做到这一点。

1 个答案:

答案 0 :(得分: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功能,将内容包装在更新面板中,添加包含OnKeyUp和{{1}的文本框客户端事件处理程序:

OnFocus