`
wangwang3ok
  • 浏览: 78218 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

TemplateField构造

阅读更多

这几天工作中碰到一个问题,将GridView列表以Excel形式导出。

但是我们构造GridView列表的时候,遇到长的内容字符串,一般都会用一个字符串方法截断一下,这样用Excel导出的内容,就不是客户希望的全部内容了。例如:“我们的内容” 被截断后得到 “我们的...”。

那么希望在导出Excel前替换掉这个列,换成全文显示的绑定列。

一般的BoundField的绑定方法请参看我博客的文章“GridView动态绑定列”。

本文只涉及TemplateField的构造方法,而且只针对前台页面为 下面代码样式的情况

<asp:TemplateField HeaderText="地址" SortExpression="Address">
                <ItemTemplate>
                    <asp:Label ID="Label5" runat="server" Text='<%# Eval("NC_cruisePersonInfo.Address") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>

 

  

完成此效果分为两步:

1. 先构造一个自定义的TemplateField类

public class MyTemplate : ITemplate
{
    //设定列的绑定字符串
    protected string bindColname;
    public MyTemplate(){}
    public MyTemplate(string bindCname)
    {
        //通过构造函数得到此绑定字符串
      bindColname = bindCname;
    }
    //初始化函数,类初始化时候自动调用
    public void InstantiateIn(System.Web.UI.Control container)
    {
        //构造一个lable
        Label lblDisplay = new Label();
        //添加此lable的绑定方法
        lblDisplay.DataBinding += new EventHandler(this.Lable_DataBinding);
        //将此lable加到TemplateField容器中
        container.Controls.Add(lblDisplay);
    }
    //lable绑定方法
    private void Lable_DataBinding(Object sender, EventArgs e)
    {
        //得到要绑定的lable
        Label l = (Label)sender; 
        GridViewRow row = (GridViewRow)l.NamingContainer;
        //这句最重要---此列的行绑定形式为Eval,绑定内容为bindColname
        l.Text = DataBinder.Eval(row.DataItem, bindColname).ToString();
    }
}

 

 2. 页面后台文件中绑定至GridView

TemplateField remarkField = new TemplateField();
//构造自定义的TemplateField类对象
 MyTemplate t2 = new MyTemplate("NC_cruisePersonInfo.Address");
//设定列标题
addressField.HeaderText = "地址";
//将此Template加入到TemplateField中
addressField.ItemTemplate = t2;
//插入到GridView的列中
gvCruisePerson.Columns.Insert(8,addressField);

 

 经由这两步,就动态的为GridView绑定了一个TemplateField 得列,此列的内容表达为 NC_cruisePersonInfo.Address ,其中NC_cruisePersonInfo是GridView对象数据源,实体对象的一个“类”属性。

 

分享到:
评论
1 楼 mr_ginger 2009-08-17  
导出EXcel应该从数据源下功夫,在GridView 中实现有点 那个了

相关推荐

    gridview添加复选框批量操作代码

    这可以通过在GridView的模板字段(TemplateField)中定义一个ItemTemplate来实现。在ASP.NET的ASPX代码中,可以看到以下模板字段的设置: ```asp &lt;asp:TemplateField&gt; 全选();" type="checkbox"&gt; ...

    .NET中GridView中添加超链接字段和属性值,并向另一页中传递参数

    key={0}") %&gt;'` 表示根据数据源中的`SomeKey`字段值构造超链接的URL,其中"{0}"是一个格式化占位符,被`SomeKey`的值替换。`Text='("SomeValue") %&gt;'`则设置超链接文本为`SomeValue`字段的值。 接下来,我们需要...

    GridView多重表头设计

    通过在TemplateField中嵌套其他的GridView或者使用其他HTML元素,可以构造出多层次的表头。 3. **CSS样式**: 使用CSS可以实现固定表头,即使在滚动表格内容时,表头始终保持可见。通过设置CSS样式如`position: ...

    经典的GridView72种使用技巧

    - `RowDeleting`事件处理删除操作,通过获取`DataKeys`中的行ID来构造删除SQL语句,执行删除操作后刷新数据。 - `RowUpdating`事件用于更新操作,获取用户输入的新值,执行更新SQL,然后关闭连接并重新绑定数据。 ...

    基于C#+VS2008实现的多层列表头GridView控件扩展程序例子

    在创建多层列表头时,我们可能需要使用嵌套的`GridView`或`Table`控件,或者使用`TemplateField`结合`HtmlGenericControl`来构造复杂的头部结构。例如: ```csharp // 添加第一层列 GridViewColumn col1 = new ...

    gridview在aspx中的不分层的增删改查

    - 在后台代码中,根据用户输入的条件构造SQL查询语句,重新绑定数据到GridView。 7. 界面优化: - 使用CSS样式调整GridView的外观,使其更符合UI设计要求。 - 可以通过设置GridView的GridLines属性为None,去掉...

    ASP.NET程序中常用的三十三种代码

    ASP.NET中的`&lt;asp:HyperLinkField&gt;`或`&lt;asp:TemplateField&gt;`可以用来创建带有参数的超链接。在运行时,这些链接会根据数据绑定的值动态生成。 这些代码片段对于ASP.NET初学者来说是非常实用的学习资源,它们涉及到...

    GridView 72般绝技(二)

    如果选中,就根据`DataKeys[i].Value`获取特定记录的主键值,构造SQL删除语句执行删除操作。 3. GridView正反双向排序: 默认情况下,GridView的排序是单向的,即只能升序或降序。要实现正反双向排序,可以自定义...

    常用的.NET代码.pdf

    `&lt;asp:TemplateField&gt;`允许自定义列的显示方式。`&lt;ItemTemplate&gt;`标签内的代码`&lt;%# Container.DataItemIndex +1 %&gt;`会计算当前行的索引(从0开始)并加1,以显示1开始的序列号。 2. **批量删除列模板列代码**: 这...

    GridView控件

    在`GridView1_RowDeleting`方法中,通过`e.RowIndex`获取要删除的行的索引,然后找到需要的字段(这里用`Label2`来获取关键字`cname`),构造SQL删除语句,执行删除操作(例如使用`Class1.sqlcomd(sql)`执行)。...

    ASP.NET数据绑定之GridView控件

    如果需要自定义列显示,可以通过TemplateField或BoundField来指定列的类型和数据绑定表达式。 2. 在后台代码中,创建数据库连接并执行查询操作,获取数据源。例如,使用SqlConnection和SqlCommand对象来连接数据库...

    gridview 显示图片的实例代码

    这里,`Eval("personName")`将从数据源中获取用户名,然后构造指向`ImageHandler`的URL。 5. **GridView显示读出的二进制图片** 如果不使用URL方式,你可以在RowDataBound事件中动态设置Image控件的`ImageUrl`,...

    ASP.NET 控件的使用

    11.2.7 使用TemplateField 363 11.3 GridView控件的事件 365 11.3.1 突出显示GridView行 366 11.3.2 显示列汇总 368 11.3.3 显示嵌套的主从表单 369 11.4 扩展GridView控件 371 11.4.1 创建长文本字段 371 11.4.2 ...

    asp.net实现批量删除实例

    在列的定义中,我们特别添加了一个模板列(TemplateField),用于显示一个复选框(CheckBox),这样用户就可以选择他们想要删除的条目。此外,还添加了一个命令列(CommandField),显示一个删除按钮,以便用户可以...

Global site tag (gtag.js) - Google Analytics