PDA

View Full Version : تکرار عکس در یک سلول از GridView



kh1387
شنبه 06 اردیبهشت 1393, 21:56 عصر
یه گرید ویو دارم که در یک ستون باید تعدادی ستاره رو نمایش بده.
میرم در قسمت تمپلیت و یک ایمیج میذارم و به این صورت Eval("image","{0}")
حالا چطوری می تونم این رو تکرار کنم بطوریکه تصویر چند مرتبه تکرار شه؟
ممنون

kh1387
یک شنبه 07 اردیبهشت 1393, 12:15 عصر
کسی نمی تونه راهنمایی کنه؟
خیلی نیاز دارم.
خواهش می کنم کمکم کنید.
مرسی

kh1387
دوشنبه 08 اردیبهشت 1393, 16:01 عصر
جهت بالا اومدن تاپیک ....

meisam12
دوشنبه 08 اردیبهشت 1393, 18:39 عصر
می توانید در Markup کد بنویسید.

<asp:GridView ID="grd" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<%for (int i = 0; i < 5; i++)
{ %>
your element
<%} %>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

kh1387
دوشنبه 15 اردیبهشت 1393, 23:17 عصر
می توانید در Markup کد بنویسید.

<asp:GridView ID="grd" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<%for (int i = 0; i < 5; i++)
{ %>
your element
<%} %>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

ممنونم
خیلی عالی بود
فقط یه مسئله
بنده می خوام بجای عدد 5 در حلقه for از کد ( Eval("starNum","{0}") استفاده کنم که این نوعش رشته ای هستش.
چطوری باید تبدیلش کنم به int?
بازم ممنونم

kh1387
سه شنبه 16 اردیبهشت 1393, 09:40 صبح
:متفکر::متفکر::متفکر::متفکر:

meisam12
سه شنبه 16 اردیبهشت 1393, 12:17 عصر
ابتدا DataSource گرید ویو را پرکن و یک کنترل لیبل در گریدویو بگذار و visible را false کن و بعد یک div در گرید ویو بگذار تا کنترل مد نطرت را در آن بگذاری.

در MarkUp بنویس

<asp:GridView ID="grd" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="lblNumber" runat="server" Visible="false" Text='<%#Eval("number") %>' />
<div id="img" runat="server">
</div>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>



در رویداد Page_Load بنویس


grd.DataSource = "your data source";
grd.DataBind();

foreach (GridViewRow row in grd.Rows)
{
System.Web.UI.HtmlControls.HtmlGenericControl divImage = row.FindControl("img") as System.Web.UI.HtmlControls.HtmlGenericControl;
int countNumber = int.Parse((row.FindControl("lblNumber") as Label).Text);

for (int i = 0; i < countNumber; i++)
{
divImage.InnerHtml += "yourElement";
}

}

kh1387
سه شنبه 16 اردیبهشت 1393, 16:07 عصر
خیلی ممنون
فقط یه مسئله
من بجای yourelement باید یه آدرس عکس که در پایگاه ذخیره شده است رو بیارم.
اینو چطوری میتونم؟
بعدش از کنترل image در asp.net استفاده می کنم
ممنون می شوم راهنمایی بفرمایید.
متشکرم

kh1387
سه شنبه 16 اردیبهشت 1393, 16:35 عصر
سلام
کسی نمی تونه راهنمایی کنه؟
آقا میثم شما چی؟

meisam12
سه شنبه 16 اردیبهشت 1393, 16:55 عصر
یک نمونه پروژه کوچک نوشتم آپلودش کردم.

kh1387
سه شنبه 16 اردیبهشت 1393, 17:18 عصر
دستت دردنکنه دوست خوبم
الهی خیر ببینی
ممنوننننننننننننننننننننن نننننننننن

kh1387
سه شنبه 16 اردیبهشت 1393, 17:57 عصر
فقط دوست عزیز یه سوال!
وقتی Select گرید ویو رو می زنم تعداد ستاره ها دوبرابر می شوند.
ولی صفحه رفرش میشه دوباره برمی گرده به حالت اول...
دلیلش چی میتونه باشه؟
ممنون

meisam12
سه شنبه 16 اردیبهشت 1393, 19:01 عصر
فقط دوست عزیز یه سوال!
وقتی Select گرید ویو رو می زنم تعداد ستاره ها دوبرابر می شوند.
ولی صفحه رفرش میشه دوباره برمی گرده به حالت اول...
دلیلش چی میتونه باشه؟
ممنون
کدی که در Load_Page نوشتی و کدی که باعث دوبرابر شدن ستاره ها می شود را بذار ببینم.

kh1387
سه شنبه 16 اردیبهشت 1393, 20:13 عصر
private void ShowStars()
{
do
{
flagShowStars = false;


foreach (GridViewRow row in GridView4.Rows)
{
System.Web.UI.HtmlControls.HtmlGenericControl divScore =
row.FindControl("divScore") as System.Web.UI.HtmlControls.HtmlGenericControl;
int countNumber = int.Parse((row.FindControl("lblScore") as Label).Text);
string imageUrl = (row.FindControl("lblImage") as Label).Text;


for (int i = 0; i < countNumber; i++)
{
divScore.InnerHtml += "<img src=\"" + imageUrl + "\" />";
}
}
} while (flagShowStars);
}

meisam12
سه شنبه 16 اردیبهشت 1393, 20:26 عصر
چزا کد را داخل do while گذاشتی

kh1387
سه شنبه 16 اردیبهشت 1393, 21:00 عصر
چزا کد را داخل do while گذاشتی
بدون وایل هم مشکل پابرجاست...
بفرمایید:


foreach (GridViewRow row in GridView4.Rows)
{
System.Web.UI.HtmlControls.HtmlGenericControl divScore =
row.FindControl("divScore") as System.Web.UI.HtmlControls.HtmlGenericControl;
int countNumber = int.Parse((row.FindControl("lblScore") as Label).Text);
string imageUrl = (row.FindControl("lblImage") as Label).Text;


for (int i = 0; i < countNumber; i++)
{
divScore.InnerHtml += "<img src=\"" + imageUrl + "\" />";
}
}

meisam12
سه شنبه 16 اردیبهشت 1393, 21:22 عصر
چه مشکلی داره؟

kh1387
سه شنبه 16 اردیبهشت 1393, 23:19 عصر
چه مشکلی داره؟
البته بگم از کنترل پنل آبدیت آژاکس استفاده می کنم.
صفحه رفرش شه طوری نمی شه ولی اگر باتنی رو کلیک کنم تعداد ستاره ها دوبرابر میشه...

meisam12
سه شنبه 16 اردیبهشت 1393, 23:34 عصر
قبل از اینکه گرید را پرکنی این شرط را بذار ببین درست می شه؟

if(!Page.IsPostBack())
{
}

kh1387
سه شنبه 16 اردیبهشت 1393, 23:42 عصر
آقا خیلی لطف کردید.
چقدر فکر کردم این کد به ذهنم نرسید!
راستی میشه کاری کرد که تعداد ستاره ها راست چینشون کنیم؟
الان وسط چینن...

kh1387
سه شنبه 16 اردیبهشت 1393, 23:43 عصر
آقا درست شد.
خیلی ممنون

meisam12
سه شنبه 16 اردیبهشت 1393, 23:57 عصر
توی div بهش style بده

<div id="divScore" runat="server" style="text-align:left;">
</div>