PDA

View Full Version : سوال: استفاده از چند قالب Item Template‌ در GridView



EnKamran
جمعه 15 آذر 1392, 19:23 عصر
سلام.
من یه صفحه دارم که میخوام لیست مطالب (مقالات) رو نشون بدم توی گرید ویوو و قالب خاص خودم رو داشته باشم خوب تا اینجا که یک گریدویو با یک ItemTemplate کارمو راه میندازه.
مشکل ایننجاست که من مقالاتم تو سه حالت هستن : Image - Video - Text
و هرکدوم قالب HTML خودشون رو دارن. من یک فیلد هم توی جدول دارم که نوع مقال رو میگیره PostMode حالا من میخوام اگه حالت Video بود قالب اول رو واسه اون رکورد نشون بده اگه Text بود قالب Text :


<!-- Text Format -->
<div class="post format-standard box">

<h2 class="title"><a href="post.html">The Meridian Sun</a></h2>
<p>text</p>

<div class="details">
<span class="icon-standard"><a href="#">August 13, 2012</a></span>
<span class="likes"><a href="#" class="likeThis">11</a></span>
<span class="comments"><a href="#">0</a></span>
</div>

</div>

Video Format :


<div class="post format-video box">
<div class="video frame">
<!-- <iframe src="http://player.vimeo.com/video/40558553?title=0&byline=0&portrait=0" width="500" height="281" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe> -->
</div>
<h2 class="title"><a href="post.html">Fragments of Iceland</a></h2>
<p>The Big Oxmox advised her not to do so, because there were thousands of bad Commas, wild Question Marks and devious Semikoli, but the Little Blind Text didn’t listen. She packed her seven versalia, put her initial into the belt and made herself on the way.</p>

<div class="details">
<span class="icon-video"><a href="#">September 13, 2012</a></span>
<span class="likes"><a href="#" class="likeThis">18</a></span>
<span class="comments"><a href="#">1</a></span>
</div>

</div>

General-Xenon
شنبه 16 آذر 1392, 07:18 صبح
سلام وقت بخیر . کلاسی درست کن تا مقدار HTML کد رو برات Generate کنه البته با استفاده از PostMode
مثال . موفق باشی<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView runat="server" ID="dgvlist" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="name" />
<asp:TemplateField>
<ItemTemplate><%# getItemHTMLCode( Eval("type").ToString()) %>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
<script runat="server">
protected override void OnLoad(EventArgs e)
{

base.OnLoad(e);

System.Data.DataTable dt = new System.Data.DataTable();
dt.Columns.Add("name");
dt.Columns.Add("type");
dt.Rows.Add("video File 1", "video");
dt.Rows.Add("image File 1", "image");
dt.Rows.Add("mp3 File 1", "audio");
dt.Rows.Add("mp3 File 2", "audio");
dgvlist.DataSource = dt;
dgvlist.DataBind();
}
public string getItemHTMLCode(string _data){
string _result = "NoData";
switch (_data.ToLower())
{
case "video":
_result = "<span style=\"display:inline-block; padding:5px; background-color:#ff6a00;\">Play Video</span>";
break;
case "image":
_result = "<span style=\"display:inline-block; padding:5px; background-color:#b6ff00;\">Preview Image</span>";
break;
case "audio":
_result = "<span style=\"display:inline-block; padding:5px; background-color:#ffd800;\">Listen Audio</span>";
break;
default:
break;
}
return _result;
}
</script>

</form>
</body>
</html>