过滤GridView 某个字段的字符

woyaodubo 2018-02-02 01:23:35
这样绑定e.Row.Cells[4],执行之后,e.Row.Cells[4] 字段全都空了,内容全没了,怎么回事?


protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)//判定当前的行是否属于datarow类型的行
{
string strcut = e.Row.Cells[4].Text;
if(e.Row.Cells[4].Text.Length>31)
{
strcut = e.Row.Cells[4].Text.Substring(0, 31);
}
//using System.Text.RegularExpressions;
Regex reg = new Regex(@"(?is)(?<=<p>).*?(?=</p>)", RegexOptions.IgnoreCase);
string content = reg.Match(strcut).Value;
e.Row.Cells[4].Text = content;
}
}
...全文
262 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
woyaodubo 2018-02-05
  • 打赏
  • 举报
回复
引用 9 楼 From_TaiWan 的回复:
按这么说,你是在页面上(已运行的)看到的<p>和</p>,然后对后台代码进行替换了 你在VS里,现在一个网页的“设计”视图输入<p>,然后切换到“源”视图,就会看到 <p> <p>是html标签,后台写了这个,浏览器认为他是一个段落的开头,不会在页面显示;要想显示<p>,需要在后台输入<p>
厉害,大牛就是不同
大然然 2018-02-03
  • 打赏
  • 举报
回复
如果内容里本来就有<p>呢
秋的红果实 2018-02-03
  • 打赏
  • 举报
回复
按这么说,你是在页面上(已运行的)看到的<p>和</p>,然后对后台代码进行替换了 你在VS里,现在一个网页的“设计”视图输入<p>,然后切换到“源”视图,就会看到 <p> <p>是html标签,后台写了这个,浏览器认为他是一个段落的开头,不会在页面显示;要想显示<p>,需要在后台输入<p>
woyaodubo 2018-02-03
  • 打赏
  • 举报
回复
引用 6 楼 From_TaiWan 的回复:
测试下,程序有没有进入 GridView1_RowDataBound方法
这样可以: <p>---------<p> </p>---------</p> 但是为什么要这样呢?直接写<p> </p>怎么就不行?
woyaodubo 2018-02-03
  • 打赏
  • 举报
回复
引用 2 楼 andywangguanxi 的回复:
自己加断点就知道了, string strcut = e.Row.Cells[4].Text; 获取到的值会把<p>这样的html标签替换成<pgt; 所以把你的正则表达式改一下就行了 @"(?is)(?<=<pgt;).*?(?=</pgt;)"
是这个问题,只是写少了一个字符,这样就对了 <p>---------<p> </p>---------</p>
秋的红果实 2018-02-02
  • 打赏
  • 举报
回复
你不是过滤么

//Regex reg = new Regex(@"(?is)(?<=<p>).*?(?=</p>)", RegexOptions.IgnoreCase);
string content =Regex.Replace(strcut, @"(?is)<p>|</p>",""); ;
EdsionWang 2018-02-02
  • 打赏
  • 举报
回复
自己加断点就知道了, string strcut = e.Row.Cells[4].Text; 获取到的值会把<p>这样的html标签替换成<pgt; 所以把你的正则表达式改一下就行了 @"(?is)(?<=<pgt;).*?(?=</pgt;)"
yzf86211861 2018-02-02
  • 打赏
  • 举报
回复
你确定你的 正则没有问题嘛
秋的红果实 2018-02-02
  • 打赏
  • 举报
回复
测试下,程序有没有进入 GridView1_RowDataBound方法
woyaodubo 2018-02-02
  • 打赏
  • 举报
回复
引用 3 楼 From_TaiWan 的回复:
你不是过滤么

//Regex reg = new Regex(@"(?is)(?<=<p>).*?(?=</p>)", RegexOptions.IgnoreCase);
string content =Regex.Replace(strcut, @"(?is)<p>|</p>",""); ;
我用的那个,如果普通字符串,不是列表的那种循环,是没有问题的,但是放在
if (e.Row.RowType == DataControlRowType.DataRow){....}
里面就无法替换,各种方法都试过了。
woyaodubo 2018-02-02
  • 打赏
  • 举报
回复
引用 1 楼 yzf86211861 的回复:
你确定你的 正则没有问题嘛
正则没问题啊, 我用一段包含<p>的字符串代替内容,是可以把<p>替换掉的。

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧