2013-09-16 24 views
0

我需要在組合框的照片,但我唯一路徑Telerik的組合框與圖片

var files = Url.Content("~/Content/skin/Simple.png"); 

@(Html.Telerik().ComboBox() 
     .Name("ComboBox") 
     .BindTo(files.Select(f => new SelectListItem { Selected = false, Text = f.ToString(), Value = "" })) 
    ) 

謝謝你,但如果我需要顯示所有的圖片文件夾

string searchFolder = Url.Content("~/Content/skin/"); 
var filters = new[] { "jpg", "jpeg", "png", "gif", "tiff", "bmp" }; 
var files = Some Class.GetFilesFrom(searchFolder, filters, false); 

有我全碼

控制器

public ActionResult Combo() 
    { 
     return View(); 
    } 

模型

public class Combo 
    { 
    public static string[] GetFilesFrom(string searchFolder, string[] filters, bool isRecursive) 
    { 
     var filesFound = new List<String>(); 
     var searchOption = isRecursive ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly; 
     foreach (var filter in filters) 
     { 
     filesFound.AddRange(Directory.GetFiles(searchFolder, String.Format("*.{0}", filter), searchOption)); 
     } 
     return filesFound.ToArray(); 
    } 
    } 

,並查看

@using TETRA.RS.WWW.UI.Models 

@{ 
    string searchFolder = Url.Content("~/Content/skin/"); 
    var filters = new[] { "jpg", "jpeg", "png", "gif", "tiff", "bmp" }; 
    var files = Combo.GetFilesFrom(searchFolder, filters, false); 
} 


@(Html.Telerik().ComboBox() 
     .Name("ComboBox") 
     .BindTo(files.Select(f => new SelectListItem { Selected = false, Text = f, Value = "" })) 
) 

我只看到完整路徑組合框 我不知道一個文件夾中有多少圖片

回答

1

有將圖像添加到不同的方式一個可從radcombobox中選擇的項目,每個項目都有其優點,最適合的項目只能由您的要求來定義。

最簡單的方法是爲ImageUrl屬性賦值。 (Telerik文檔:http://www.telerik.com/help/aspnet-ajax/combobox-appearance-item-images.html

或者,您可以修改項目模板。 (Telerik的演示:http://demos.telerik.com/aspnet-ajax/combobox/examples/functionality/templates/defaultcs.aspx

+0

謝謝你,但是如果我需要在文件夾 – Egor

+0

的所有照片你有當前的代碼?您是否想要爲每個項目放置多個圖像(即每個項目是否爲單獨的文件夾)?你看過文件管理器控件嗎? (Telerik演示:http://demos.telerik.com/aspnet-ajax/editor/examples/filemanagers/defaultcs.aspx#qsf-demo-source) – talegna

+0

我編輯了我的問題並編寫了我的所有代碼 – Egor

0

我用劍道UI 我有圖片的文件夾,我不知道有多少有 我需要把所有的圖片和界面組合使用

方法找到所有圖片

public static string[] GetFilesFrom(string searchFolder, string[] filters, bool isRecursive) 
    { 
    var filesFound = new List<string>(); 
    var searchOption = isRecursive ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly; 
    foreach (var filter in filters) 
    { 
     filesFound.AddRange(Directory.GetFiles(searchFolder, String.Format("*.{0}", filter), searchOption)); 
    } 
    return filesFound.Select(Path.GetFileName).ToArray(); 
    } 

SettingsController

public ActionResult Theme() 
    { 
     return View(); 
    } 

    public JsonResult ThemeJson() 
    { 
     string searchFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Content\\themes\\skin"); 
     var filters = new[] { "jpg", "jpeg", "png", "gif", "tiff", "bmp" }; 
     var files = Tools.GetFilesFrom(searchFolder, filters, false); 
     return Json(files.Select(f => new { Id = f, Name = Path.GetFileNameWithoutExtension(f) })); 
    } 

和查看

@using Kendo.Mvc.UI 

@(Html.Kendo().ComboBox() 
      .Name("customers") 
      .DataTextField("Name") 
      .DataValueField("Id") 
      .HtmlAttributes(new { }) 
      .DataSource(source => source.Read(read => read.Action("ThemeJson", "Settings").Type(HttpVerbs.Post))) 
      .Filter("startswith") 
      .Height(300) 
      .Template("<img src=\"" + Url.Content("~/Content/themes/skin/") + "${data.Id}\" alt=\"${data.Id}\" />" + 
         "<dl>" + 
         "Name theme: ${ data.Name }" + 
         "</dl>") 
) 

還需要添加引用kendo.all.min.js和Kendo.Mvc.UI