这里是一个LongTextField继承于BoundField用来显示长文本(比如说备注信息之类的),该控件根据当前的显示模式是编辑模式还是显示模式来分别显示一个Div控件和TextBox控件.

我的表达能力不好,还是直接上代码吧.

首先定制控件如下

Code
using System;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;

/// <summary>
///LongTextField 的摘要说明
/// </summary>
namespace Custom
{
    public class LongTextField : BoundField
    {
        private Unit _width = new Unit("250px");
        private Unit _height = new Unit("60px");
        /// <summary>
        /// The Width of field
        /// </summary>
        public Unit Width
        {
            get { return _width; }
            set { _width = value; }
        }
        /// <summary>
        /// The Height of field
        /// </summary>
        public Unit Height
        {
            get { return _height; }
            set { _height = value; }
        }
        protected override void InitializeDataCell(DataControlFieldCell cell, DataControlRowState rowState)
        {
            // if not editing,show in scrolling div
            if ((rowState & DataControlRowState.Edit) == 0)
            {
                HtmlGenericControl div = new HtmlGenericControl("div");
                div.Attributes["Class"] = "longTextField";
                // Set width of div
                div.Style[HtmlTextWriterStyle.Width] = _width.ToString();
                // Set height of div
                div.Style[HtmlTextWriterStyle.Height] = _height.ToString();
                //本句代码有疑惑,明天查看
                div.Style[HtmlTextWriterStyle.Overflow] = "auto";

// Add eventhandler to handle databinding
                div.DataBinding += new EventHandler(div_DataBinding);
                cell.Controls.Add(div);
            }
            else
            {
                TextBox txtEdit = new TextBox();
                txtEdit.TextMode = TextBoxMode.MultiLine;
                txtEdit.Width = _width;
                txtEdit.Height = _height;

txtEdit.DataBinding += new EventHandler(txtEdit_DataBinding);

cell.Controls.Add(txtEdit);
            }
        }

void div_DataBinding(object sender, EventArgs e)
        {
            HtmlGenericControl div = sender as HtmlGenericControl;
            object value = this.GetValue(div.NamingContainer);
            // Assign the formatted value
            div.InnerText = this.FormatDataValue(value, this.HtmlEncode);
        }

void txtEdit_DataBinding(object sender, EventArgs e)
        {
            TextBox txtBox = sender as TextBox;

object value = this.GetValue(txtBox.NamingContainer);
            txtBox.Text = this.FormatDataValue(value, this.HtmlEncode);
        }
    }
}

然后在页面中使用的代码如下

Code
<%@ Page Language="C#" %>

<%@ Register Namespace="Custom" TagPrefix="LLS" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>自定义数据字段</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:GridView runat="server" ID="grd" DataSourceID="srcProducts" AutoGenerateEditButton="true"
            AutoGenerateColumns="false" DataKeyNames="EmployeeID">
            <Columns>
                <asp:BoundField HeaderText="EmployeeID" DataField="EmployeeID" Visible="false" />
                <LLS:LongTextField DataField="Notes" HeaderText="备注">
                </LLS:LongTextField>
            </Columns>
        </asp:GridView>
        <asp:SqlDataSource ID="srcProducts" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
            SelectCommand="SELECT EmployeeID,LastName,FirstName,Notes FROM Employees" UpdateCommand="UPDATE Employees SET Notes = @Notes WHERE EmployeeID = @EmployeeID ">
        </asp:SqlDataSource>
    </div>
    </form>
</body>
</html>

转载于:https://www.cnblogs.com/zhuisha/archive/2008/08/24/1275129.html

定制.NET GridView的长文本显示表格相关推荐

  1. css截断长文本显示

    实现 截断长文本显示处理,以前是通过后台的截取,但这种方法容易丢失数据,不利于SEO. 而通过前端css的截断,则灵活多变,可统一运用与整个网站. 这项技术主要运用了text-overflow属性,这 ...

  2. android基础知识学习(1) TextView属性大全+单行显示长文本

    android:autoLink 设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接.可选值(none/web/email/phone/map/all)  androi ...

  3. ABAP 显示长文本

    业务背景:目前项目上  采购订单打印输出EXCEL的需求:允许客户进行长文本编辑.更改后保存到采购订单抬头,并且打印输出到EXCEL,且下次进入到相同的采购订单打印时,能取出相应的长文本进行excel ...

  4. elementui table组件和popover实现表格列内容过长,显示隐藏多余字段,hover显示所有内容;无内容或则内容少则不显示popover

    elementui table组件和popover实现表格列内容过长,显示隐藏多余字段,hover显示所有内容:无内容或则内容少则不显示popover 1.场景效果 2.实现 3.进阶版 1.场景效果 ...

  5. 通知单的长文本和合作伙伴功能获得

    通知单的透明表: VIQMEL  视图,通知单的主要属性 Qmsm  任务表 Qmur  主题 Qmih  故障表 Qmel 主表 Qmfe 项目 (长文本  缺陷定位 等) T356_t  优先级 ...

  6. html给文本换行,CSS长文本换行

    在网页设计中,我们常常会发现文本在容器中的换行和我们理想的不一样,这导致不对齐溢出等不美观现象.那么我们怎么来控制长文本的换行呢?用CSS即可完成. 一.DIV.P等块级元素的换行控制 1.当我们定义 ...

  7. Word操作习题之长文本排版、邀请函制作

    因为要让学生课上练题,在网上翻阅了很多Word有关的练习题,都是归去来兮辞等文字的基本编辑,太没有意思了,于是就图书馆找了一些习题,并整理成Word文档,在这里供大家使用.(如果大家使用计算机二级of ...

  8. q标签,短文本引用;blockquote标签,长文本引用

    <q>标签,短文本引用 <q>引用文本</q>,默认显示双引号,不需要在文本中添加 <blockquote>标签,长文本引用 浏览器对<block ...

  9. python读取pdf表格_【Python 库】解析PDF文本及表格——pdfminer、tabula、pdfplumber 的用法及对比...

    pdf 是个异常坑爹的东西,有很多处理 pdf 的库,但是没有完美的. 一.pdfminer3k pdfminer3k 是 pdfminer 的 python3 版本,主要用于读取 pdf 中的文本. ...

  10. 【转载】ABAP自定义长文本的处理

    SAP中所有的长文本都存在如下两张表中: STXH 长文本的抬头信息 STXL 长文本的明细信息 长文本在使用前,需要先进行配置,如果不配置是不可能往表STXH和STXL中写入文本值的. 配置在视图V ...

最新文章

  1. 解决Vue用v-html、v-text渲染后台富文本框文本内容样式修改问题,用自定义css样式无法渲染出对应效果的问题
  2. mongodb 监控项详解(mms)
  3. Linux内核设计与实现---页高速缓存和页回写
  4. my batis plus 小数没有0_大黄蜂3号Plus,妈咪保贝的强劲对手!
  5. 大咖来信 | 轮值董事长徐直军,复盘华为AI战略出台始末
  6. 查询数据库表大小sql
  7. mate20pro换鸿蒙系统,鸿蒙2.0下载
  8. 免费的安卓录屏、录音软件(无需root)
  9. excel的if函数嵌套使用
  10. 华为USG防火墙NAT
  11. 10个简单的放松运动
  12. Vscode,Open a folder or workspace…(File -> Open Folder)解决方案
  13. Ruby学习-Ruby语言的一些特点
  14. EFCore 简单使用
  15. MySQL主从同步(一主一从、一主多从、主从从)等结构的概述与配置
  16. 5000立方米球罐设计
  17. Unity Shader - 板砖日志 - 简单的树、草 等植物的 随风飘扬 动画
  18. Open Images Dataset V6 简介
  19. 【分享贴】高中数学教师资格证面试经验分享贴
  20. MySQL函数(经典收藏)

热门文章

  1. MariaDB修改端口号
  2. Python中的self和init
  3. Django中的templates(你的HTML页面放哪里)
  4. 【整理分享1】PHP中exit()与die()的区别
  5. jquery怎么选择 某个指定id的div下面的第2个子div再设置css?
  6. Redis在.net中的应用学习
  7. 【割点】【割边】tarjan
  8. windows2008 网络相关
  9. oncreate 测量尺寸
  10. 072 datetime模块