PDA

View Full Version : نمایش فیلد با فرمت خاص



aserfg
سه شنبه 16 شهریور 1389, 09:10 صبح
با سلام،

من در جدولی به نامtarticle مقالات خودم رو نگهداری می کنم ، هر کدام از مقالات دارای فرمت خاصی می باشند (از لحاظ اندازه فونت و...) و در گرید ویو یه تمپلیت فیلد ایجاد کردم و با EVAL(“articletext”) به اون دسترسی دارم . خاصیت TEXT یه لیبل رو با EVAL ست کردم . خوب در این حالت برای نشان دادن اطلاعات درون اون فیلد با فرمتی که من می خوام مشکلی نیست . چون همون فونت لیبل این کار رو انجام می ده . خوب تا اینجا مشکلی نداشتم . ولی من می خوام تنها قسمتی از این مقاله نشون داده بشه . برای این کار متدی نوشتم (به نام getabstract(string)) که خروجیش استرینگه . واین کار رو انجام دادم و این بار برای نشون دادن به این شکل عمل کردم

<#getabstact(EVAL(“articletext”).tostring)#> این رو به خاصیت text لیبل نسبت دادم این کار انجام شد یعنی همون تعداد کاراکترهایی که می خواستم نشون می ده ولی با همون فرمت مقاله نه با فرمت لیبل.

مشکل من اینه که می خوام با همون فرمت لیبل باشه . لطفا راهنمایی بفرمایید . ضمن توضیح علت به وجود آمدن این مشکل.

با تشکر از همه دوستان.

ASPX
سه شنبه 16 شهریور 1389, 11:36 صبح
اين articletext داراي كدهاي HTML است ؟ وقتي با getabstact خلاصه ميكني اولش كدهاي html رو حذف كن به فرمت TEXT خالص تبديل كن بعدش هر فرمتي خواستي بهش بده
براي حذف تگ HTML به TEXT ميتوني از Regular Experssion ها استفاده كني
http://www.regex.blogfa.com/post-2.aspx
--------------------
اين articletext داراي كدهاي HTML است ؟ وقتي با getabstact خلاصه ميكني اولش كدهاي html رو حذف كن به فرمت TEXT خالص تبديل كن بعدش هر فرمتي خواستي بهش بده
براي حذف تگ HTML به TEXT ميتوني از Regular Experssion ها استفاده كني
http://www.regex.blogfa.com/post-2.aspx

aserfg
سه شنبه 16 شهریور 1389, 12:07 عصر
بلی دارای کدهای html است اگه امکان داره نحوه استفاده از این تگ را توضیح بدین <.*?>

ASPX
سه شنبه 16 شهریور 1389, 12:32 عصر
البته براي ياد گرفتن Regex ها بايد از استاد بهروز راد كمك بگيري ولي حذف كدهاي html با يك تابع ساده مثل اين صورت ميگيره
قدم اول فراخواني فضا نام


using System.Text.RegularExpressions;


كد


private string StripHTML(string htmlString)
{
string pattern = @"<.*?>";
return Regex.Replace(htmlString, pattern, string.Empty);
}
/code]
--------------------
[code]
private string StripHTML(string htmlString)
{
string pattern = @"<.*?>";
return Regex.Replace(htmlString, pattern, string.Empty);
}

s_mokhtari
سه شنبه 16 شهریور 1389, 13:03 عصر
سلام
دوست عزيز من هم اين تابع رو نيازش دارم ولي توي ليستها نيست وقتي مي‌نويسم خطا ميده
منظورم اين getabstact
ممنون:بوس:

aserfg
سه شنبه 16 شهریور 1389, 15:03 عصر
با سلام دست شما دوست عزیز درد نکنه . مشکل تقریبا حل شد . فقط در مورد بعضی فیلدها مقدار عجیبی رو این تابع بر می گردونه :

Normal 0 internetexplorer4
من در ابتدا فکرکردم به خاطر اینه که مقدار null بهش داده میشه اما با متوجه شدم علتش این نیست . البته برای تنها تعدادی از فیلدها ناگفته نمونه که این فیلدهایی رو که به این شکل نشون می ده حاوی بیشترین عناصرhtml هستند .
لطفا راهنمایی بفرمایین .
در مورد جواب دوستمون s_mokhtari (http://barnamenevis.org/forum/member.php?u=121915) این تابع رو من خودم نوشتم و در فضاهای نام وکلاسهای asp.net دنبالش نگردین :

protected string getabstract(string articleContext)
{
string pattern = @"<.*?>";


string temp = articleContext;
string context=Regex.Replace(temp, pattern, string.Empty);
context=context.Trim();


if (context.Length > 350)
context = context.Substring(0,350);
context += "...";

return context;
}

aserfg
سه شنبه 16 شهریور 1389, 18:57 عصر
با سلام اگه امکان داره جواب حقیر رو بدین ممنون می شم .

ASPX
چهارشنبه 17 شهریور 1389, 08:41 صبح
امكان داره بخاطر pattern باشه
نمونه هاي زيادي هست يك سرچ ساده بكني جواب ميده
اين رو امتحان كن


<[^>]*>

البته اگه متنت با Word نوشته شده باشه گزينه هاي ديگه اي هم هست
--------------------


public string ClearHTMLTags(string strHTML, int intWorkFlow)
{
Regex regEx = null;
string strTagLess = string.Empty;try
{
strTagLess = strHTML;//1. "remove html tags"

if (intWorkFlow != 1)
{

//this pattern mathces any html tag
regEx = new Regex("<[^>]*>", RegexOptions.IgnoreCase);"");

//all html tags are stripped
}//2. "remove rouge leftovers"// "or, I want to render the source"
// "as html."
//We *might* still have rouge < and >
//let's be positive that those that remain
//are changed into html characters










if (intWorkFlow > 0 && intWorkFlow < 3)
{
regEx = new Regex("[<]", RegexOptions.IgnoreCase);//matches a single <
strTagLess = regEx.Replace(strTagLess, "&lt;");
regEx = new Regex("[>]", RegexOptions.IgnoreCase);//matches a single >
strTagLess = regEx.Replace(strTagLess, "&gt;");
}//3. return the stripped off text
return strTagLess;
}
catch
{
throw;
}
}

aserfg
چهارشنبه 17 شهریور 1389, 15:06 عصر
سلام و تشکر
کد شما درست کار می کنه ولی کل مقاله رو بر می گردونه من فقط تعداد خاصی مثلا 350کاراکتر اولیه رو می خوام . من برای این کار این طور محدودش کردم :


public string ClearHTMLTags(string strHTML, int intWorkFlow)
{
Regex regEx = null;
string strTagLess = string.Empty;try
{
strTagLess = strHTML;//1. "remove html tags"

if (intWorkFlow != 1)
{

//this pattern mathces any html tag
regEx = new Regex("<[^>]*>", RegexOptions.IgnoreCase);

//all html tags are stripped
}//2. "remove rouge leftovers"// "or, I want to render the source"
// "as html."
//We *might* still have rouge < and >
//let's be positive that those that remain
//are changed into html characters
if (intWorkFlow > 0 && intWorkFlow < 3)
{
regEx = new Regex("[<]", RegexOptions.IgnoreCase);//matches a single <
strTagLess = regEx.Replace(strTagLess, "&lt;");
regEx = new Regex("[>]", RegexOptions.IgnoreCase);//matches a single >
strTagLess = regEx.Replace(strTagLess, "&gt;");
}//3. return the stripped off text
return getabstract(strTagLess);
}
catch
{
throw;
}
}
protected string getabstract(string articleContext)
{
if (articleContext.Length > 350)
articleContext = articleContext.Substring(0, 350);
articleContext += "...";

return articleContext;
}

وقتی به این شکل محدودش می کنم باز هم همون خروجی ناشناخته ای رو که عرض کردم برای بعضی مقالات می ده .