PDA

View Full Version : قرار دادن player html5 در ستون Kendo Grid MVC



mehdin69
پنج شنبه 12 فروردین 1395, 08:49 صبح
سلام خسته نباشید
دوستان اگر بخوایم مثلاً این سوال رو برای خودمون حل کنیم
یه تعداد آلبوم موسیقی داریم که هر کدوم تعدادی موزیک دارن می خوایم یک Grid تو در تو داشته باشیم که اولی بیاد نام آلبوم و مشخصات آلبوم رو نشون بده و وقتی روی ردیف کلیک میکنیم بیاد مشخصات موزیک رو نشون بده ... ( به همراه یک ستون برای پخش موزیک )
من اومم از کد زیر استفاده برای این کار جواب میده اما player رو نمیذاره ( حتی توی if که توی template column هم گذاشتم نمیره )
و حتی با ClientTemplate هم رفتم که ارور میداد

کد دستورات Cshtml


<script>
function dataBound() {
this.expandRow(this.tbody.find("tr.k-master-row").first());
}
</script>

<div class="k-rtl">
@(Html.Kendo().Grid<MusicSite.Models.ViewModel.AlbumeMusicsVM>()
.Name("grid")
.Columns(columns =>
{
columns.Bound(e => e.AlbumeName).Width(110).Title("نام آلبوم");
columns.Bound(e => e.Artist_Band_Name).Width(110).Title("نام بند یا گروه");
columns.Bound(e => e.ReleaseYear).Width(110).ClientTemplate("#=moment(ReleaseYear).format('jYYYY/jMM/jDD')#").Title("تاریخ انتشار");
columns.Command(command =>
{
//command.Custom("View").Text(" ").HtmlAttributes(new DialogOpenerOption() { gridField = "Id_Ads", gridid = "grid_Ads", CLASS = "detail_button", Target = Url.Action("Details", "Ads") }.Dic());
command.Custom("Edit").Text("ویرایش").HtmlAttributes(new DialogOpenerOption() { gridField = "Id_Ads", gridid = "grid_Ads", CLASS = "edit_button", Target = Url.Action("Edit", "Albume") }.Dic());
command.Custom("Delete").Text("حذف").HtmlAttributes(new DialogOpenerOption() { gridField = "Id_Ads", gridid = "grid_Ads", CLASS = "delete_button", Target = Url.Action("Delete", "Albume") }.Dic());
}).Width(70);
})
.Sortable()
.Pageable()
.Scrollable()
.Resizable(e => e.Columns(true))
.ClientDetailTemplateId("template")
.HtmlAttributes(new { style = "height:600px;" })
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(6)
.Read(read => read.Action("HierarchyBinding_Albume", "Albume"))
)
.Events(events => events.DataBound("dataBound")) )

<script id="template" type="text/kendo-tmpl">
@(Html.Kendo().Grid<MusicSite.Models.ViewModel.AlbumeMusicsVM>()
.Name("grid_#=Id_Albume#") // template expression, to be evaluated in the master context
.Columns(columns =>
{
columns.Bound(o => o.MusicName).Width(110);
columns.Bound(o => o.Keywords).Width(110);
columns.Bound(o => o.URLSEO).Width(110);
columns.Bound(o => o.CategoryName).Width(110);
columns.Bound(o => o.FileMusicUrl).Filterable(false).Groupable(false) .Title("فایل")
.Template(
@<text>
@if (item.IsSoundMusic)
{
@Html.Html5().Media.Audio(item.Id_Music.ToString() , @"../.." + item.FileMusicUrl, "مرورگر شما از این پخش کننده پشتیبانی نمی کند برای بدست اوردن این امکان مرورگر خود را بروز نمایید", new { @style = "border:solid 1px #CCCCCC;height:30px" })
}
else if (!item.IsSoundMusic)
{
@Html.Html5().Media.Video(item.Id_Music.ToString() , @".." + item.FileMusicUrl, "مرورگر شما از این پخش کننده پشتیبانی نمی کند برای بدست اوردن این امکان مرورگر خود را بروز نمایید", new { @style = "border:solid 1px #CCCCCC;height:30px" })
}

</text>);
columns.Command(command =>
{
//command.Custom("View").Text(" ").HtmlAttributes(new DialogOpenerOption() { gridField = "Id_Ads", gridid = "grid_Ads", CLASS = "detail_button", Target = Url.Action("Details", "Ads") }.Dic());
command.Custom("Edit").Text("ویرایش").HtmlAttributes(new DialogOpenerOption() { gridField = "Id_Music", gridid = "grid_Ads", CLASS = "edit_button", Target = Url.Action("Edit", "Music") }.Dic());
command.Custom("Delete").Text("حذف").HtmlAttributes(new DialogOpenerOption() { gridField = "Id_Music", gridid = "grid_Ads", CLASS = "delete_button", Target = Url.Action("Delete", "Music") }.Dic());
}).Width(100);
})
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(10)
.Read(read => read.Action("HierarchyBinding_Musics", "Albume", new { Id_Albume = "#=Id_Albume#" }))
)
.Pageable()
.Sortable()
.Scrollable()
.Resizable(e => e.Columns(true))
.ToClientTemplate()
)
</script>
<script>
function dataBound() {
this.expandRow(this.tbody.find("tr.k-master-row").first());
}
</script>
</div>


کد دستورات Controller


public ActionResult HierarchyBinding_Albume([DataSourceRequest]DataSourceRequest request)
{
return Json(GetData().ToDataSourceResult(request));
}
private static IEnumerable<AlbumeMusicsVM> GetData()
{
MusicSiteEntities db = new MusicSiteEntities();
return (from albume in db.Albume
where albume.Users_Id == Classes.UserInfo.userID
select new AlbumeMusicsVM()
{
Id_Albume = albume.Id_Albume,
AlbumeName = albume.AlbumeName,
Artist_Band_Name = albume.Artist_Band_Name,
ReleaseYear = albume.ReleaseYear,
FolderName = albume.FolderName,
Users_Id = albume.Users_Id,
CreateDate = albume.CreateDate.Value,
FileCoverUrl = albume.FileCoverUrl,
Ordershow = albume.Ordershow,
IsSoundAlbume = albume.IsSoundAlbume

}).OrderBy(m => m.Ordershow).OrderByDescending(d => d.CreateDate).ToList().Distinct();
}


public ActionResult HierarchyBinding_Musics(Guid Id_Albume, [DataSourceRequest] DataSourceRequest request)
{
MusicSiteEntities db = new MusicSiteEntities();
var data= (from music in db.Music
where music.Albume_Id == Id_Albume
select new AlbumeMusicsVM()
{
Id_Music = music.Id_Music,
MusicName = music.MusicName,
Likes = music.Likes,
Dislikes = music.Dislikes,
Keywords = music.Keywords,
MusicText = music.MusicText,
URLSEO = music.URLSEO,
CategoryName = music.Category.CategoryName,
IsSoundMusic = music.IsSoundMusic
}).ToList();


return Json(data.ToDataSourceResult(request));

}


تصویر چیزی که برام میاد که player درش قرار نداره...


139800