给datagrid模板页里面的控件动态赋值

本文介绍了一种在ASP.NET DataGrid中展示从数据库获取的含有HTML标签的文本内容的方法。通过使用DataGrid的模板列和HttpUtility.HtmlDecode()方法,可以实现在界面上正确显示不含HTML标签的纯文本。
     前两天做东西:需要把前台的文本编辑器里面的内容存到数据库然后取到后台做处理,问题是从文本编辑器存的数据都带有html标签(我们不能把这些标签给管理员看吧) 所以要处理一下。
   首先我是直接的用datagrid绑定,绑定上去了html标签依然显示(很是奇怪以前也这么干过似乎是默认的就给换成的对应的格式了),看看直接绑定 <asp:BoundColumn DataField="cqcontent" HeaderText="内容"/>  里面没有找到html转码的属性(一句话直接的用<asp:BoundColumn/>无法解决 )。
      想到用datalist可以在绑定字段的时候用HttpUtility.HtmlDecode()处理掉,但是无法达到其他的功能。
  没法最后只得datagrid模板页里面放个lable控件然后动态的给其其赋值。
 <asp:DataGrid id="dgContent" runat="server"> 
<Columns>
<asp:TemplateColumn HeaderText="内容">
                                            <ItemTemplate>
                                            <asp:Label ID="LabCqComment" runat="server" width="100%"></asp:Label>
                                            </ItemTemplate>
                                            </asp:TemplateColumn>

 </Columns>
                                    </asp:DataGrid>

                                               
直接在对应的cs文件中声明一个protectd 的string变量然后写到lable中间去 html标签没了,但每次绑定的都是以个值,看看数据库,值都是最后一行。看来还是没有动态的绑定上去。

     那就继续改吧,我们需要找到每个lable然后把对应的值给绑定上去。这样我们就必须先找到这个lable控件,用this.DGQcomment.Items[i].FindControl("LabCqComment")找到了,可是它是个Control对象,没用我们习惯的Text属性(需要强制转换为lable)。

实现代码如下:

 protected void DGQcomment_ItemDataBound(object sender, DataGridItemEventArgs e)
    {
        qcomment.Qid = Int32.Parse(Request.QueryString["QId"].ToString());
        DataTable dt = QCommentCtr.Qcomment_GetQcommentByqid(qcomment);
        if (dt != null && dt.Rows.Count != 0)
        {
            for (int i = 0; i < this.DGQcomment.Items.Count; i++)
            {
                ((Label)this.DGQcomment.Items[i].FindControl     ("LabCqComment")).Text=HttpUtility.HtmlDecode(dt.Rows[i]["cqcontent"].ToString());
            }
        }

    }


我要的结果就出来了



转载于:https://www.cnblogs.com/zmxmiss/archive/2008/06/23/1227971.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值