GridView 模板列中的数据绑定

 

方法一:直接绑定查询的数据

<asp:TemplateField HeaderText="姓名">
                  
<ItemTemplate>       <%# Eval("FirstName") %>
                    
<%# Eval("LastName") %>      
                  
</ItemTemplate>
<asp:TemplateField>   

<%# DataBinder.Eval(Container.DataItem,"数据库字段")%>

<%# DataBinder.Eval(Container.DataItem, "ColumnName") %>
<%# DataBinder.Eval(Container.DataItem, "ColumnName", null) %>
<%# DataBinder.Eval(Container, "DataItem.ColumnName", null) %>

其他用法
<%# ((DataRowView)Container.DataItem)["ColumnName"] %>
<%# ((DataRowView)Container.DataItem).Row["ColumnName"] %>
<%# ((DataRowView)Container.DataItem)["adtitle"] %>
<%# ((DataRowView)Container.DataItem)[n] %>
<%# ((DbDataRecord)Container.DataItem)[0] %>
<%# (((自定义类型)Container.DataItem)).属性.ToString() %>//如果属性为字符串类型就不用ToString()了


说明:FirstName   ,LastName皆为数据库字段。这里直接绑定没有对结果做任何格式处理和运算。同时你也可以看到,可以直接在模板里布置多个绑定。

方法二:对运算结果进行运算

<asp:TemplateField HeaderText="打折">
                            <ItemTemplate>
                                <%# DataBinder.Eval(Container.DataItem, "Discount").ToString() == "0" ? "不打" : DataBinder.Eval(Container.DataItem, "Discount").ToString()%>折
                            </ItemTemplate>
                        </asp:TemplateField>

说明:运用三元运算符,对结果进行判断。这种方法适合那些非True即False的情况。

方法三:对结果进行格式化处理

<%# DataBinder.Eval(Container.DataItem, "Discount_beginDate", "{0:yyyy-m-d}").ToString() == "1900-0-1" ? "无" : DataBinder.Eval(Container.DataItem, "Discount_beginDate", "{0:yyyy-m-d}").ToString()%>

说明:可以看到这里查询日期进行了格式化,然后进行了运算。

方法四:绑定后台方法

<asp:TemplateField HeaderText="流行程度">
                            <ItemTemplate>
                               <%# GetStatusPicture(Container.DataItem) %>   
                         
                            </ItemTemplate>
                        </asp:TemplateField>

后台方法:

protected string GetStatusPicture(object dataItem)
    {
        int units = Int32.Parse(DataBinder.Eval(dataItem, "PopularLevel").ToString());
        string strNum = "";
        switch (units)
        {
            case 0:
                strNum = "0 颗星";
                break;
            case 1:
                strNum = "1 颗星";
                break;
            case 2:
                strNum = "2 颗星";
                break;
            case 3:
                strNum = "3 颗星";
                break;
            case 4:
                strNum = "4 颗星";
                break;
            case 5:
                strNum = "5 颗星";
                break;
        }
        return strNum;
    }

或者用:

<%# GetStatusPicture(((System.Data.DataRowView)Container.DataItem)["PopularLevel"])%>   

此时后台方法中 : int units = Int32.Parse(DataBinder.Eval(dataItem, "PopularLevel").ToString());

应该改成:int units = Int32.Parse(DataBinder.Eval(dataItem).ToString());

说明:后台方法必须为Public或Proteced,接受的参数最好为Object类型,然后再方法内进行转换。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值