PDA

View Full Version : نمایش دادن فقط چند حرف lable های دیتالیست



mp2009
دوشنبه 02 مهر 1386, 23:54 عصر
سلام
من یه دونه دیتالیست دارم که اطلاعاتم رو نشون میده
من یه دونه lable توی این دیتالیست دارم که میخواهم فقط 100 حرف اونو نشون بده و بقه رو ... کنه یعنی با " ... " جمع کنه(همون خلاصه خبر)

دوستان خیلی سرچ کردم ولی چیزی دستگیرم نشد
کسی میتونه کمک کنه؟

sama01
سه شنبه 03 مهر 1386, 01:53 صبح
من چنین کاری کردم. اول چک می‌کنم که آیا بیش از حد مجاز هست یا نه و اگر بود، cut می‌کنم:


Protected Function myCut(ByVal Text As String, ByVal length As Integer)
If Text.Length < length Then
Return Text
Else
Return Left(Text, length - 4) + " ..."
End If
End Function

----------------
<asp:Label ID="Label1" runat="server" Text='<%# myCut(Eval("comments"),200) %>'/>

hamed_bostan
سه شنبه 03 مهر 1386, 09:23 صبح
راه حل بهتری وجود نداره واگرنه اینطور که واسه هر رشتهباید این پردازش انجام شه . کسی راه بهتری بلد نیست؟

sama01
سه شنبه 03 مهر 1386, 13:07 عصر
به هرحال از هر روشی استفاده بشه، یک چنین پردازشی باید انجام بشه. اگر راه دیگری وجود داشته باشد، تنها تفاوتش با این کد، می تواند در این باشد که این کد را شما می‌بینید ولی بقیه را نه.

hamed_bostan
سه شنبه 03 مهر 1386, 13:35 عصر
تنها تفاوتش با این کد، می تواند در این باشد که این کد را شما می‌بینید ولی بقیه را نه.

مظورتون چیه که این کد رو شما می بینید اما بقیه رو نه

sama01
چهارشنبه 04 مهر 1386, 01:56 صبح
مثلا اگر فردی برای اتصال به پایگاه داده و پر کردن مثلا یک datagrid از کنترل‌های آماده استفاده کنه، با اینکه خودش کد نویسی انجام بده، فرق خیلی خاصی از نظر اجرا در سرور نمی‌کنه. به هر حال کنترل‌ها هم باید یک سری کدهایی را اجرا کنند. ولی این کدها برای ما نشان داده نمی‌شه.
در این مورد خاص هم به هر حال از هر روشی استفاده بشه، سرور باید برای هر متن، یک پردازش انجام بده.
امیدوارم منظورتون رو در خصوص پردازش برای هر متن درست متوجه شده باشم.

nazaninam
چهارشنبه 04 مهر 1386, 02:25 صبح
2 تا راه بهتر وجود داره
1- یک فیلد برای خلاصه خبر قرار بده
2- در هنگام دریافت اطلاعات توسط دستورات sql متن را substring کن...
راه اول خیلی بهتره

sama01
چهارشنبه 04 مهر 1386, 03:37 صبح
با این کار، حجم dataBase بی دلیل افزایش پیدا می‌کنه.
البته اگر قرار باشه جملات کامل باشند، چاره‌ای جز این کار نیست. ولی در غیر این صورت، بریدن متن خیلی بهتره.
دلیل اینکه من یک تابع تعریف کردم این بود که بررسی کنم که تنها در صورت طولانی‌تر بودن متن از مقدار تعیین شده، عمل بریدن و اضافه کردن ... انجام بشه.

explod_javad
چهارشنبه 04 مهر 1386, 10:44 صبح
سلام دوست عزیز
شما باید از دستور Sq l استفاده کنید
Select left( NAME,15) as New_Name From Tabel 1
اگه مشکل داشتی بگو
Explod_javad@yahoo.com

mp2009
چهارشنبه 04 مهر 1386, 14:31 عصر
با سلام
اول از همه تشکر میکنم بابت جوابهایی که دادند
من مشکلم رو با این کد حل کردم البته باید بگم وقتمو خیلی گرفت
این کد رو برای شما میزارم تا ازش استفاده کنید
----------------------


protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
//-------------------------------------------------------------------

if (e.Item.ItemIndex != -1)
{
Label mohsen = (Label)e.Item.FindControl("BodyLabel");
if (mohsen.Text.Length >= 600)
{
mohsen.Text = mohsen.Text.Substring(0, 600)+" . . . ";
}
((Label)e.Item.FindControl("BodyLabel")).Text = mohsen.Text;
}
}
//-------------------------------------------------------------------



اگه کسی مشکلی داشت همینجا بگه

explod_javad
پنج شنبه 05 مهر 1386, 00:05 صبح
سلام
با تشکر از mp2009
mp2009 ، چرا لقمه رو دور سرت می چرخونی .
بهترین ، ساده ترین و کارآمد ترین روش استفاده از دستور sql است . چون محدودیت نداره.

sama01
پنج شنبه 05 مهر 1386, 04:59 صبح
بله. استفاده از دستورات sql روش خوبیه. ولی محدودیت خاص خودش رو داره. در حالت کد نویسی که بنده و جناب mp2009 اشاره کردیم، امکان اضافه کردن مثلا سه نقطه در پایان متن را حتی با اعمال شرط داراست که این مورد در دستورات sql قابل اجرا نیست.
به هر حال من چنین دستوری را تا کنون ندیده بودنم و از این بابت از شما سپاسگزارم.
امیدوارم در ادامه هم چنین پست‌های موثری داشته باشید.

explod_javad
پنج شنبه 05 مهر 1386, 10:01 صبح
سلام دوستان محترم
همانطور که همه دوستانی که با زبان پر قدرت SQL سروکار دارند می دانند که می توانند این مشکل را هم حل کنند.
Selse LEFT(Name,15)+'...' as New_Name From Table
این هم از چند نقطه
حل عزیز

abolfazl585
پنج شنبه 05 مهر 1386, 10:44 صبح
با تشکر از explod_javad:
من نمیدونم چرا دوستان اینقدر sql رو دست کم گرفتن؟
ما حتی میتونیم شرطهای گنده تر از این رو تو sql قرار بدیم.
تازه، ما میتونیم از توابع در sql استفاده کنیم که حتی بیشتر از کدنویسی در net. قدرت داره و هم سرعتش بیشتره.

sama01
جمعه 06 مهر 1386, 02:15 صبح
یعنی می‌شه شرط بگذاریم که اگر از n کاراتر بیشتر بود، سه نقطه اضافه بشه؟

hamed_bostan
جمعه 06 مهر 1386, 14:09 عصر
واسه متن فارسی:



select '...'++left(news,100) as NWS from NewsTable
where condition...
,واسه من انگلیسی:


select right(news,100)++'...' as NWS from NewsTable
where condition...
دوست من شما خیلی راحت میگی n کاراکتر رو انتخاب کن و بیار و سه تا نقطه هم تهش اضافه کن . به همین راحتی

sama01
یک شنبه 08 مهر 1386, 05:14 صبح
منظور من اینکه که اگر تعداد کاراکترها کمتر از n بود، دیگر چیزی اضافه نشود. آیا امکان دارد؟

hamed_bostan
یک شنبه 08 مهر 1386, 16:46 عصر
خوب مطمعنا این یه دستور sql داره و حتی مطمعنا میتونی با یه if در دستور حلش کنی پیشنهاد میکنم این سوال رو تو لخش sql مطرح کنی تا زود تر به جواب برسی