0

コンボボックスに画像が必要ですが、パスしかありません

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 = "" }))
)

コンボボックスにフルパスしか表示されず、フォルダー内の写真の数がわかりません

4

2 に答える 2

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 )

于 2013-09-16T14:37:39.590 に答える
0

Kendo 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();
  }

設定コントローラ

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 を追加する必要があります。

于 2013-09-19T13:48:24.260 に答える