PDA

View Full Version : یک مشکل جدی در Binding



mahdi_negahi
یک شنبه 21 اسفند 1384, 21:52 عصر
سلام به استادان عزیزم
من یک فیلد تو دیتا بیس دارم که روزهای هفته را نشان می دهد با اعداد که مثلا 0 نشان دهنده شنبه است من میخوام توی یک DataGrid این دیتا هارو نشان دهم که با دستور زیر کار میکنم
<%#DataBinder.Eval(Container.DataItem,"DayN")%>

که این دستور را همان 0 یا 1 ها را نشان میکند که برای رفع این مشکل خواستم از switch استفاده کنم که دستور بالا را نمی توانم در switch بگذارم حتی نمی توانم این را به یک متغییر Bind کنم
لطفا برای حل مشکل من را کمک کنید:گیج:

manager
یک شنبه 21 اسفند 1384, 22:38 عصر
می تونید از کد زیر استفاده کنید :«


<Columns>
<asp:TemplateField>
<ItemTemplate>
Day<%DataBinder.Eval(Container.DataItem,"DayN")%>
</ItemTemplate>
</asp:TemplateField>
</Columns>

mahdi_negahi
دوشنبه 22 اسفند 1384, 08:55 صبح
عزیر جان مثل اینکه شما مشکل من را متوجه نشدید من یک DataGrid دارم می خوام در ستون روز این DataGrid مثلا بنویسد شنبه ولی ستون DB من با عدد است (0=شنبه، 1=یکشنبه) من نمی توانم این کا را بکنم حال من کدی می خواهم که 0 را تبدیل به شنبه کند

keramatiabi
دوشنبه 22 اسفند 1384, 10:26 صبح
راه حل اول : شما می توانید قبل از bind کردن datagrid یک ستون به dataset که به عنوان datasource استفاده کرده اید اضافه کنید سپس با استفاده از switch مقدار مورد نظر را در داخل ستون ایجاد شده اضافه کنید و مقدار جدید را به کاربر نشان دهید در نمونه کد زیر ستون PDat به dataset اضاقه شده است و پس از تبدیل ستون StartDateTime به فارسی و اضافه کردن / به repeater فرستاده شده است
<td>

<%# DataBinder.Eval(Container.DataItem,"PDate") %>

</td>

daSeminar.Fill(dsSeminar);

dsSeminar.Tables[0].Columns.Add("PDate",System.Type.GetType("System.String"));

foreach(DataRow drSeminar in dsSeminar.Tables[0].Rows )
{
DateTime TempDate = new DateTime();
TempDate = Convert.ToDateTime(drSeminar["StartDateTime"]);
TempDate = myCal.PersianDate(TempDate);

drSeminar["PDate"] = TempDate.Day.ToString()+"/"+TempDate.Month.ToString()+"/"+TempDate.Year.ToString();
}

repSeminar.DataBind();
}راه حل دوم : شما می توانید در داخل select تان مقدار برگشتی را ست کنید به این ترتیب که با استفاده از case when مقدار ستون dayn را چک کرده و مقدار دلخواه را در قالب یک ستون مجازی به صفحه بفرستید مثلا در مورد زیر باید مقدار CDay را در صفحه نشان دهید

select Cday = ( case DayN when 1 then N'شنبه'
when 2 then N'یک شنبه'
.....
end)

mahdi_negahi
دوشنبه 22 اسفند 1384, 11:39 صبح
متشکرم آقا دست شما درد نکنه

manager
دوشنبه 22 اسفند 1384, 20:04 عصر
یه راه حل دیگه هم دارید اینکه :
روزهای هفته را داخل یک آرایه ذخیره کنید و بعد بااستفاده از databinder محتوای آرایه را چاپ کنید این راه حل از راه حل های بالا سریع تر و آسون تره !!...

خیلی راحته ولی اگه خواستید کدشو براتون می نویسم

mahdi_negahi
سه شنبه 23 اسفند 1384, 13:00 عصر
این راحته ولی یک مشکل دارد این که من مثلا از کجا بفهمم که در سطر (مثلا) 2 DataGrid باید شنبه نوشته شود