所以,这是场景:
我在基于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
这样做的结果是,当我单击一个新图像按钮时,显示的图像是前一个网络的图像,即缓存总是一个回发延迟。
请帮忙! 谢谢!
答案 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的单击事件中的图像。
它现在有效! :)