PDA

View Full Version : نمایش اطلاعات در دیتا گرید از چپ به راست و برعکس



karimi84
دوشنبه 12 تیر 1385, 07:59 صبح
سلام
اطلاعات داخل جدول در دیتا بیس به وسیله یک فیلد از مشخص کنند این است که این مطالب فارسی است یا لاتین از هم جدا میشوند حال میخواهم وقتی که اطلاعات داخل دیتاگرید نمایش داده می شود اطلاعاتی که لاتین است از چپ به راست و اطلاعاتی که فارسی است از راست به چپ نمایش داده شود
چطور می توانم این کار را انجام دهم
متشکر

white fox
دوشنبه 12 تیر 1385, 09:44 صبح
بهترین راهی که من میتونم پیشنهاد بدم این هست که شما اطلاعات داخل Table بزارید.برای ستونی که قرار اطلاعات اون فیلد رو در خودش نگهداری کنه یعنی اون تگ TD یک خاصیت ID بدید مثلا cel1 و خاصیت runtat=server حالا وقتی اطلاعات رو از دیتابیس میخونید با یک if ساده میتونید بفمید که فارسی هست یا انگلیسی اگر مثلا فارسی بود یک همچین کدی مینویسید.


cel1.Attributes.CssStyle.Add("direction", "rtl")


هم align به سمت راست میره و هم Dir اون ستون Right-to-Left میشه.خوب برای موارد انگلیسی هم که واضحه...
موفق باشید.

Behrouz_Rad
دوشنبه 12 تیر 1385, 10:21 صبح
خاصیت Visible ستون TemplateColumn فیلدی که مشخص کننده ی نوع متن انگلیسی یا فارسی هست رو به False تنظیم کن.
داده ها از طریق Literal Control نمایش داده میشن.
مثال:


<asp:DataGrid id="DataGrid1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateColumn Visible="False">
<ItemTemplate>
<asp:Literal ID="litLanguage" Runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"fld_language") %>'>
</asp:Literal>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<ItemTemplate>
<asp:Literal ID="litProduct" Runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"fld_product") %>'>
</asp:Literal>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>

در روال ItemDataBound دیتاگرید، با ایجاد یک ارجا به LiteralControl حاوی نوع زبان رکورد مورد نظر، یکی از مقادیر "right" یا "left" رو به خاصیت align سلول (TD) مربوطه نسبت میدی:


Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
If e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.Item Then
Dim obj_lit As Literal
obj_lit = e.Item.FindControl("litLanguage")
If obj_lit.Text = "Farsi" Then
e.Item.Cells(0).Attributes.Add("align", "right")
Else
e.Item.Cells(0).Attributes.Add("align", "left")
End If
End If
End Sub

موفق باشید.

karimi84
سه شنبه 13 تیر 1385, 09:34 صبح
با تشکر از راهنمایتون
ولی من با c# کار میکنم و این مراحل که گفتن جواب نداد
همه اطلاعات در یک حالت نمایش میدهد

Behrouz_Rad
سه شنبه 13 تیر 1385, 09:52 صبح
یک مقدار، فقط یک مقدار سعی کن که تلاش کنی!
هر چند که لقمه ای از این آماده تر نمی تونم بهت بدم، چون سخت ترین کاری که باید انجام بدی، انجام اعمالی همچون Copy Paste هست!

موفق باشی.