图像在新搜索中没有变化。 C#(asp.net项目)

时间:2011-03-22 14:31:55

标签: c# asp.net image arraylist

这使用了bing的网络服务。我有一个图像按钮和一组图像按钮。每次单击数组中的下一个图像时,单个更改。问题是如果我点击它并进行新搜索,图像按钮数组不会改变。 代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using bing_search.net.bing.api;
using System.Collections;




namespace bing_search
{

public partial class _Default : System.Web.UI.Page
{
    static ArrayList images = new ArrayList();
    static Image[] imagearry;
    static ImageButton[] imgButtnsArray;
    static int counter = 0;
    int fooBarCount = 0;
    int firstLoad = 0; 
    protected void Page_Load(object sender, EventArgs e)
    {


    }

    protected void DoItButton_Click(object sender, EventArgs e)
    {
        images.Clear();
        imagearry = null; 
        imgButtnsArray = null;

        BingService bs = new BingService(); 
        net.bing.api.SearchRequest req = new SearchRequest();
        req.AppId = "0B15AB60D625A10059A4A04B68615C5B0D904CA9";
        req.Query = SearchBox.Text;
        req.Sources = new SourceType[] { SourceType.Image};
        req.Market = "en-us";
        req.Adult = AdultOption.Off;
        req.Image = new ImageRequest();
        req.Image.CountSpecified = true;
        req.Image.Count = 50;

        SearchResponse resp = bs.Search(req);
        foreach (ImageResult result in resp.Image.Results)
        {
            Image im = new Image();
            im.ImageUrl = result.MediaUrl;
            im.Width = 200;
            im.Height = 200;
            images.Add(im);
            //this.Controls.Add(im);

        }
      //  Image lol = (Image)images[0];



        int size = images.Count; 
        imagearry = new Image[size];
        Type typ = typeof(Image);
        imagearry = (Image [])images.ToArray(typ); 
        ImageButton1.ImageUrl = imagearry[0].ImageUrl;
        int blaCount = 0;
        ArrayList imgButtns = new ArrayList(); 
        foreach (Image ii in images)
        {
            ImageButton imgb = new ImageButton();
            imgb.Width = 200;
            imgb.Height = 200;
            imgButtns.Add(imgb);    
        }
        size = imgButtns.Count;
        imgButtnsArray = (ImageButton[])imgButtns.ToArray(typeof(ImageButton));

        foreach (ImageButton iii in imgButtnsArray)
        {
            imgButtnsArray[fooBarCount].ImageUrl = imagearry[fooBarCount].ImageUrl;
            Panel1.Controls.Add(iii);
            fooBarCount++;

        }
        fooBarCount = 0;
        counter = 0;

    }


     protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {
        counter++;
        heightLable.Text = "clicked";
        Image tempImage = (Image)imagearry[counter];
        ImageButton1.ImageUrl = tempImage.ImageUrl;
        foreach (ImageButton iii in imgButtnsArray)
        {
            imgButtnsArray[fooBarCount].ImageUrl = imagearry[fooBarCount].ImageUrl;
            Panel1.Controls.Add(iii);
            fooBarCount++;

        }
        fooBarCount = 0;
        counter = 0;
    }
}
}

2 个答案:

答案 0 :(得分:2)

每次点击都会重置两个计数器,因此它始终从同一图像开始。

fooBarCount = 0;
    counter = 0;

它们也不是静态的,因此它们在每次加载页面时都会重置为0,并显示相同的图像而不会更改。

如果从另一方面缓存是问题,因为我不知道图像文件名是什么,也许这是问题,然后尝试类似的事情。

  

imgButtnsArray [fooBarCount] .ImageUrl =   imagearry [fooBarCount] .ImageUrl +   “?rnd =”+ RandomNumber.ToString();

答案 1 :(得分:0)

我将ImageButton1_Click更改为此,现在可以正常工作了。感谢您的快速回复。回到播放.net

     protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
     {
        counter++;
        heightLable.Text = "clicked";
        Image tempImage = (Image)imagearry[counter];
        ImageButton1.ImageUrl = tempImage.ImageUrl;
        //Random RandomNumber = new Random(10000);
        foreach (ImageButton iii in imgButtnsArray)
        {
           Panel1.Controls.Add((Image)imagearry[fooBarCount]);
            fooBarCount++;
        }
        fooBarCount = 0;
        counter = 0;
    }