在回发时更改图像

时间:2010-08-17 12:24:10

标签: c# asp.net image caching

所以,这是场景

我在基于asp.net c#的网站上有一个页面,它在从查询字符串中获取请求后动态显示数据。 例如: 品牌= HTC&安培;模型=野火

现在,在此页面中,我想分别显示每个网络中可用的所有交易。 因此,在第一个页面加载中,我从交易中具有所请求的手机的每个网络的表中检索数据,将其作为数据表存储在缓存中。 我有一个数据列表,用于显示具有该手机交易的网络的图像按钮。用户将单击网络的图像按钮以查看该网络的交易。

要显示交易,我使用的是gridview,它从缓存中检索其数据源。另外,我已经通过网格视图的每个列标题中的下拉列表对行进行了过滤。

所有这些都在更新面板内。

一切正常。

问题: 我希望每当用户点击网络的图像按钮时,图像应该出现在gridview上方,其中包含该网络的徽标。

我尝试过的事情: 每当单击图像按钮时,我将网络名存储在缓存中(也需要过滤网格视图)。然后,在页面加载时,我这样做:

if(ScriptManager1.IsInAsyncPostBack)
{
    Image img = new Image();
    img.ImageUrl = "images/" + Cache["network"] + "_logo.jpg";
    nw_image.Controls.Clear();
    nw_image.Controls.Add(img);
}

其中,nw_image是我用于显示所选网络徽标的表格单元格。 我还将图像文件夹中的网络徽标保存为:'network'_logo.jpg 例如:3_logo.jpg,orange_logo.jpg

这样做的结果是,当我单击一个新图像按钮时,显示的图像是前一个网络的图像,即缓存总是一个回发延迟。

请帮忙! 谢谢!

2 个答案:

答案 0 :(得分:1)

不是使用动态控件(即在回发上手动创建Image控件),而是在页面标记中定义Image控件更容易 并将其Visible属性默认为false。然后在回发上,将ImageUrl属性设置为正确的网址,将Visible属性设置为true

此外,请确保您的nw_image表格单元格位于UpdatePanel内,并且您在更新面板上将ChildrenAsTriggers设置为true(这是默认设置),或已指定对于ImageButton的AsyncPostbackTrigger事件,Click

答案 1 :(得分:0)

最后我开始工作了。

我现在放置的静态图片没有id = "net_img"runat = "server"EnableViewState = "true"以外的任何属性。

而不是从缓存中获取网络名称,而是根据单击的图像按钮更改ImageButton的单击事件中的图像。

它现在有效! :)