2014-09-19 5 views
0

У меня есть этот код, который заполняет мой список, который содержит то, что я набираю в текстовом поле. Моя проблема в том, как я могу просмотреть выбранный элемент в своем listbox в image viewer, поскольку все мои файлы - это изображения? Я что-то упускаю?Как просмотреть выбранный элемент в списке в view viewer asp.net

Вот мой код:

protected void Button1_Click(object sender, EventArgs e) 
    { 
     ListBox1.Items.Clear(); 
     string[] files = Directory.GetFiles(Server.MapPath("~/images"), "*.*", SearchOption.AllDirectories); 


     foreach (string item in files) 
     { 
      string fileName = Path.GetFileName(item); 
      if (fileName.ToLower().Contains(TextBox1.Text.ToLower())) 
      { 
       ListBox1.Items.Add(fileName); 
      } 

     } 
    } 

protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      DocumentImage.ImageUrl = Directory.GetDirectories("~/images") + ListBox1.SelectedItem.ToString(); 
     } 
+0

Directory.GetDirectories ("~/images") возвращает массив, поэтому вы по существу пытаетесь объединить массив со строкой (String [] + string). – JuStDaN

+0

@JuStDaN Что делать? – NatsuDragneel

ответ

2

Это должно работать, я думаю:

protected void Button1_Click(object sender, EventArgs e) 
{ 
    ListBox1.Items.Clear(); 
    string[] files = Directory.GetFiles(Server.MapPath("~/images"), "*.*", SearchOption.AllDirectories); 
    foreach (string item in files) 
    { 
     string fileName = Path.GetFileName(item); 
     if (fileName.ToLower().Contains(TextBox1.Text.ToLower())) 
     { 
      string subPath = item.Substring(Server.MapPath("~/images").Length).Replace("\\","/"); 
      ListBox1.Items.Add(new ListItem(fileName, subPath)); 
     } 
    } 
} 

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

protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    DocumentImage.ImageUrl = "~/images" + ListBox1.SelectedItem.Value; 
} 

Здесь мы используем дополнительный путь для установки правильного URL-адреса изображения.

Обратите внимание, что вы должны иметь AutoPostBack значение ИСТИНА на DocumentImage в вашей asxp странице для того, чтобы изображение, чтобы изменить при изменении выбора в списке.