GridView中的自定义列

GridView 可以根据数据源自动生成列,但是如果我们需要自定义列的显示方式,让GridView的列完完全全的由我们自己来控制,我们就需要用到一种特殊的列 ――TemplateField。因为GridView生成的列都是一个字段一列,如果我们需要把两个字段合并为一列显示呢?我们可以使用模板列。我们可以指定包含标记和控件的模版,自定义列的布局和行为,我们可以新建一个模版列,也可以直接把已经生成的列转换为模版列来进行个性化的设置。

在GridView 上单击右键,选择编辑模版,在弹出菜单中选择要编辑的列,出现列模版的编辑画面。其中HeaderTemplate――自定义列的标头部分显示的内容, FooterTemplate――脚注部分显示哪谌荩?/SPAN>ItemTemplate――是打开网页后此列数据显示的内容, EditItemTemplate――此列处于编辑状态时如何显示,AlternatingItemTemplate――交替项显示的内容,也就是说为了显示效果,可以隔行分别以不同的风格显示。

Example 1:
我们现在假设有一个表,其中有一个字段是username,我们现在产生一个自定义列,自定义列中包含此人的照片,同时我们假定照片的路径为 image/username.jpg。我们首先右键点击GridView,在智能标记中,选择编辑列,添加一个模版列,然后编辑模版中的 ItemTemplate,加入一个Image控件,然后右键点击Image控件,选择Edit DataBindings,在ImageUrl中设置 Field Binding,首先我我要Bound to 数据源中的某列,因为所有图片的路径和格式是相同的,唯有名字不同而已,所以我们这里选中 username字段,在format中,我们要自己定义其格式,输入image/{0}.jpg, {0}代表的就是上面绑定的字段,下面有一个 Two Way DataBinding 的复选框,就是是否双向绑定的意思,如果单向绑定,一般采用Eval,也就是说数值只从数据源传到页面上,如果双向绑定,也就是采用Bind的话,对数据的修改可以回传到数据源之中。 

在web页面执行时,不同的行因为username不同,图片的名字也会做出相应的替换。点击确定,然后执行当前网页,我们就可以看到在我们的自定义列中显示出了用户的照片。

Example 2:

在数据库中,存储性别的时候,一般采用bit数据类型,存储为True或者False,在GridView自动生成列的时候,一般使用 CheckedBoxField 列来显示bit类型的数据,显示在网页上就是一个单选框,如果选中,也就是Checked了,就是男的,否则就是女的。这样看起来,很不直观,下面我们通过自定义列将性别显示为男、女。

首先在GridView的Show Smart Tag中,选择编辑列,然后双击TemplateFields ,添加了一个模版列,确定后,点击右键选择编辑模版,选中刚添加的列。在ItemTemplate中添加一个 DropListDown控件,然后编辑它的数据绑定,Edit DataBinding,把SelectedValue属性绑定到性别列。

在DropListDown 控件中选择 Edit Item,就是编辑其下拉列表的项,我们添加两个Item,一个的Text属性是男,Value设置为True,一个的Text属性设置为女,Value属性设置为False。到这里,你明白了么?因为DropDownList控件的显示文本和其值是可以不一样的,我们用数据绑定取到了性别这一列的值,True或者False,然后反映到DropDownList控件上,如果值为True,因为Text属性为男的Item的 Value为True,所以我们现在运行网页,在新添加的列中,显示的不再是单选框或者True、false这些没有含义的东西,而是以下拉列表的方式显示出了当前用户是 男还是女。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP.NET GridView 控件可以通过绑定数据源来自动生成,但如果需要自定义的样式、行为或内容,可以使用自定义的方式来实现。 以下是一些常见的自定义方式: 1. TemplateField:通过在GridView 添加 TemplateField ,可以在添加自定义的 HTML 或控件。例如,可以在添加 LinkButton 或 Image 控件,以实现可点击的链接或图像。 2. BoundField:通过在 GridView 添加 BoundField ,可以设置的数据绑定方式和格式化方式。例如,可以设置日期的显示格式。 3. CommandField:通过在 GridView 添加 CommandField ,可以添加自定义的命令按钮,例如“编辑”、“删除”等。 4. HyperLinkField:通过在 GridView 添加 HyperLinkField ,可以实现类似于 TemplateField 的效果,但是只能添加超链接。 以下是一个示例,展示如何使用 TemplateField 和 BoundField 实现自定义: ```asp <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"> <Columns> <asp:TemplateField HeaderText="Customer Name"> <ItemTemplate> <asp:Label ID="lblCustomerName" runat="server" Text='<%# Eval("CustomerName") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:BoundField DataField="OrderDate" HeaderText="Order Date" DataFormatString="{0:d}" /> <asp:TemplateField HeaderText="Order Total"> <ItemTemplate> <asp:Label ID="lblOrderTotal" runat="server" Text='<%# Eval("OrderTotal", "{0:c}") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> ``` 在上面的示例,我们添加了三个:一个使用 TemplateField 显示客户名称,一个使用 BoundField 显示订单日期,一个再次使用 TemplateField 显示订单总额。我们还使用 Eval 函数绑定了数据源的字段。 注意,当使用自定义时,需要设置 GridView 的 AutoGenerateColumns 属性为 False,否则 GridView 会自动创建并覆盖我们添加的自定义

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值