PDA

View Full Version : سوال:محدود کردن کاراکتر درlabel



rahim_shirkhani
یک شنبه 12 اردیبهشت 1389, 16:00 عصر
سلام به دوستان.چطوری میشهمحدود کردن کاراکتر درlabel ،در asp.net
برای اخبار سایت می خوام اینکار رو کنم تا متن در 2 خط به صورت خلاصه نمایش داده شه تا با کلیک بر روی ادامه مطلب کامل خونده شه من گیرم فقط روی محدود کردن کاراکتردر label هستش؟؟؟؟/

asp2.net
یک شنبه 12 اردیبهشت 1389, 17:07 عصر
کار سختی نباید باشد من از این طریق استفاده میکنم شما میتوانید در دیتا بیس یک فیلد را اختصاص بدهید قسمت از اخبار که این همان خلاصه خبر هستش. و همچنین یک فیلد را برای کل خبر . دفعه اول همان خلاصه خبر میاد و وقتی روی خلاصه خبر کلیک کردی کل خبر را نشان می دهد. البته گر سوالی داشتی هستم.

rahim_shirkhani
دوشنبه 13 اردیبهشت 1389, 12:33 عصر
خوب این روش درسته ولی می خواستم اگه بشه یه فیلد اخبار باشه و لیبل رو محدود کنم تا مثلاً 30کاراکتر رو نمایش بده حالا نمیدونم این کار عملی هست یا نه؟چون اینجوری فکر کنم از لحاظ فنی بهتر باشه درسته؟ البته تو سایت های خارجی جستجو زیاد کردم یه روش بود ولی درست نفهمیدم حالا اگه کسی راه حلی به ذهنش میرسه کمک بده ممنون میشم

si6arp
دوشنبه 13 اردیبهشت 1389, 12:45 عصر
باید از دستور SubString استفاده کنی و مثلا" تعداد 20 کاراکتر از کاراکتر 0 تا 20 رو جدا کنی و با یک استرینک دیگه جمع کنی ("<br>") و بعد 20 کاراکتر دیگه رو از متن جدا کنی از کاراکتر 20 تا 40 و با استرینگ قبلی جمع کنی و در لیبل نمایش بدی .
در کد زیر در FullNews باید متن خبر به صورت کامل قرار داده شود تا بتونی ازش جدا کنی.



string SubS_1 = FullNews.SubString(0,20).ToString();
string Subs_2 = SubS_1 + "<br>" + FUllNews.SubString(20,40).ToString() + "...";
Lbl.Text = SubS_2;



امیدوارم مفید واقع شده باشه

rahim_shirkhani
سه شنبه 14 اردیبهشت 1389, 08:12 صبح
سلام ممنون از کمکت فقط اگه میشه کد vbیاJava این کد رو بهم بگی من از دیتا لیست استفاده میکنم چطور این کد رو بذارم ؟

si6arp
سه شنبه 14 اردیبهشت 1389, 08:25 صبح
شما این راه رو میتونی انجام بدی :

در صفحه (MyPage.aspx.cs) CodeBehindیک پابلیک بنویسی و یک پارامتر بهش پاس بدی و روی پارامتر عملیات انجام بده و بازگشت داشته باشه :



CodeBehind :

public string GetNews(object obj)
{
string s1 = obj.ToString();
string s2 = s1.SubString(0,20).ToString();
string s3 = s2 + "<br>" + s1.SubString(20,40).ToString + "...";
return s3
}



و در کد نویسی HTML برای دیتا لیست این کد رو برای لیبیل بنویس :



<asp:Lable id="lbl" runat="server" Text='<%#GetNews(Eval("Field Of News On Your Table")) %>' ></asp:Lable>


شما با این کار خبر کامل رو به پابلیک GetNews ارسال کردین و در آنجا تعداد کارامتر رو جدا سازی نموده و بازگشت آن در لیبل نمایش داده میشود

Himalaya
سه شنبه 14 اردیبهشت 1389, 12:14 عصر
select [ID],[Title],left([Comment],100) as Summary from tblname

بعد تو گرید

<%# Eval("Summary")%>

بعد id رو با کوئری استرینگ بفرست به یه صفحه دیگه و اونجا کل متن رو نشون کاربر بده

rahim_shirkhani
سه شنبه 14 اردیبهشت 1389, 16:48 عصر
ممنون از دوستان.من کدی که دادین رو انجام دادم Substringرو نمی شناسه؟؟چیز خاصی باید تعریف شه؟؟؟

si6arp
سه شنبه 14 اردیبهشت 1389, 16:51 عصر
زمانی که میخواین SubString کنید باید از نوع رشته ای باشه
S1.SubString(StartInt,LengthInt);

در اینجا S1 یک متغییر رشته ای هست که در آن متن قرار داره

Himalaya
سه شنبه 14 اردیبهشت 1389, 23:34 عصر
شما با این کار خبر کامل رو به پابلیک GetNews ارسال کردین و در آنجا تعداد کارامتر رو جدا سازی نموده و بازگشت آن در لیبل نمایش داده میشود

وقتی مستقیم از خود دیتابیس میشه به تعدادی که میخوایم کاراکتر دریافت کنیم چرا باید کل متن رو از دیتابیس بگیریم و بعد اونو ارسال کنیم به تابع ... تازه بعد اینا بیایم مثلا 100 کاراکتر از اون رو جدا کنیم؟؟؟
با کد زیر میتونیم خیلی راحت این کارو از طریق دستور sql انجام بدیم

left([Comment],100)

rahim_shirkhani
چهارشنبه 15 اردیبهشت 1389, 08:56 صبح
چطور از Sqlاستفاده کنم واضحتر توضیح بدید لطفا؟به عنوان مثال من این
<asp:Label ID="typeLabel" runat="server" Text='<%# Eval("type") %>'></asp:Label>
می خوام Selectکنم چطوری؟؟؟
left,summary,commentاینجا چی هستن توضیح بده؟؟؟

si6arp
چهارشنبه 15 اردیبهشت 1389, 13:10 عصر
وقتی مستقیم از خود دیتابیس میشه به تعدادی که میخوایم کاراکتر دریافت کنیم چرا باید کل متن رو از دیتابیس بگیریم و بعد اونو ارسال کنیم به تابع ... تازه بعد اینا بیایم مثلا 100 کاراکتر از اون رو جدا کنیم؟؟؟
با کد زیر میتونیم خیلی راحت این کارو از طریق دستور sql انجام بدیم

left([Comment],100)

به خاطر اینکه ایشون میخواد متن در دو خط نمایش بده . پس باید اوجا جدا سازی بشه و تگ <br> به استرینگ اضافه بشه .
این نظر شخصیه منه . اگه راه بهتر هست خوشحال میشم بدونم .

Himalaya
چهارشنبه 15 اردیبهشت 1389, 22:10 عصر
چطور از Sqlاستفاده کنم واضحتر توضیح بدید لطفا؟به عنوان مثال من این
<asp:LabelID="typeLabel"runat="server"Text='<%# Eval("type") %>'></asp:Label>
می خوام Selectکنم چطوری؟؟؟
left,summary,commentاینجا چی هستن توضیح بده؟؟؟

خوب این بیشتر به sql مربوطه تا ASP.NET ولی با این حال...
چطور میتونیم مثلا 10 کاراکتر سمت چپ از ستون col1 رو بدست بیاریم


select left([col1],10) from tblname

بالاخره شما این سلکتو یا تو دیتاسورسی که مثلا به گرید وصله نوشتید یا مثلا توسط یه reader دارید این سلکت رو اجرا میکنید...خوب مقدار برگشتی رو هر جا که میخواید میتونید نشون بدید...

rahim_shirkhani
پنج شنبه 16 اردیبهشت 1389, 08:13 صبح
دوست عزیز karajiمن درست متوجه نمی شم کدتون رو یه کد بهم بده ارور نده ؟

rahim_shirkhani
پنج شنبه 16 اردیبهشت 1389, 08:21 صبح
دوست عزیز si6arpمن این کد رو اجرا کردم میگم Substringرو ارور میده اگه میشه این کدی که میدی رو یبار امتحان کن بهم بده واقعا نیاز دارم؟؟ممنون میشم ازتون

Himalaya
جمعه 17 اردیبهشت 1389, 01:59 صبح
دوست عزیز karajiمن درست متوجه نمی شم کدتون رو یه کد بهم بده ارور نده ؟

اول اینکه جمله ات رو درست بنویس...چند دقیقه وقت گرفت تا بفهمم منظورت چیه...
دوست عزیز karajiمن کدتون رو درست متوجه نمی شم. یه کد بهم بده که ارور نده.
منظورت همون هلو بدو بیا برو تو گلو هستش دیگه... یه کم فکر کن خودت میفمی..




public string GetNews(object obj)
{
string s1 = obj.ToString();
string s2 = s1.SubString(0,20).ToString();
string s3 = s2 + "<br>" + s1.SubString(20,40).ToString + "...";
return s3
}

اونوقت شما مطمئنی که مثلا کاراکتر 20 که تو خط اول به عنوان کاراکتر آخر هستش همون space هستش؟؟
چون در غیر این صورت کلمه آخر از خط اول کامل رو صفحه قرار نمیگیره... تو حالت یه خطی شاید زیاد مهم نباشه ولی تو چند خطی!!! (space فقط یه مثال بود)

si6arp
جمعه 17 اردیبهشت 1389, 14:42 عصر
اول اینکه جمله ات رو درست بنویس...چند دقیقه وقت گرفت تا بفهمم منظورت چیه...
دوست عزیز karajiمن کدتون رو درست متوجه نمی شم. یه کد بهم بده که ارور نده.
منظورت همون هلو بدو بیا برو تو گلو هستش دیگه... یه کم فکر کن خودت میفمی..



اونوقت شما مطمئنی که مثلا کاراکتر 20 که تو خط اول به عنوان کاراکتر آخر هستش همون space هستش؟؟
چون در غیر این صورت کلمه آخر از خط اول کامل رو صفحه قرار نمیگیره... تو حالت یه خطی شاید زیاد مهم نباشه ولی تو چند خطی!!! (space فقط یه مثال بود)

ممنون از توجهی که به مطلب من داشتید و نکته ای که بیان کردید.
خوب میشه با یک تابع اون کاراکتر خواص رو چک کرد.
میشه شما روش تشخیصون رو در SQL بنویسید ؟ و در ضمن یک تیکه کد رو از روشتون به صورت سمپل در اینجا قرار بدید تا بقیه هم استفاده کنند.

profnami
جمعه 17 اردیبهشت 1389, 15:17 عصر
سوال به این سادگی رو خیلی طول دادید . ببینید شما یه تابع میخواید با دو ورودی . یکی رشته ی مورد نظر و دیگری طول رشته ی که شما میخواید برگشت داده بشه . یه تابع هم میخواید که کدهای Html ذخیره شده تون رو به متن ساده تبدیل کنه . بالاخره شما اخبار رو به صورت html ذخیره کردید . خوب خیلی ساده :


private string SubStringText(object InputText, object StartIndex, object Length)
{
string StrText = InputText.ToString();
int StrLenght = Convert.ToInt32(Length);
if (StrText.Length > StrLenght)
{
return StrText.Substring(Convert.ToInt32(StartIndex), StrLenght) + " ... ";
}
else
{
return StrText;
}
}

و تابع دوم :


private string GetPlainTextFromHtml(string Html)
{
return Regex.Replace(Html, "<[^>]*>", string.Empty);
}

و نحوه ی استفاده :


public string SubStringHtml(object InputHtml, object StartIndex, object Length)
{
return SubStringText(GetPlainTextFromHtml(InputHtml.ToStr ing()), StartIndex, Length);
}


و در آخر :


<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateField>

<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# SubStringHtml(Eval("Message"),0,300) %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>


امیدوارم مفید بوده باشه