Изображения не меняются при новом поиске.C # (проект asp.net) - PullRequest
2 голосов
/ 22 марта 2011

Это использует веб-сервис 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 ]

2 голосов
/ 22 марта 2011

Вы сбрасываете оба счетчика при каждом клике, поэтому он всегда начинается с одного и того же изображения.

fooBarCount = 0;
    counter = 0;

также они не являются статичными, поэтому они в любом случае сбрасываются в 0 при каждой загрузке страницы и показывают одинаковоеизображение, а не изменение.

Если с другой стороны проблема в кеше, потому что я не могу знать, как называется файл образа, и, возможно, это проблема здесь, тогда попробуйте что-то вроде.

imgButtnsArray [fooBarCount] .ImageUrl = imagearry [fooBarCount] .ImageUrl + "? Rnd =" + RandomNumber.ToString ();

0 голосов
/ 22 марта 2011

Я изменил 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;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...