读书人

GridView动态判断某行值后自动显示别的

发布时间: 2012-01-19 00:22:27 作者: rapoo

GridView动态判断某行值后自动显示别的控件的问题
我想实现的功能是GridView里显示的某行,例如订单状态列显示:等待付款,则程序自动在傍边加上“立即支付”链接。
我的程序如下:

apsx:

<asp:TemplateField HeaderText= "订单状态 " SortExpression= "Status ">
<ItemStyle HorizontalAlign= "Center " />
<HeaderStyle HorizontalAlign= "Center " />
<ItemTemplate>
<asp:Label ID= "ddzt " runat= "server " Text= ' <%# Bind( "Status ") %> '> </asp:Label>
<asp:HyperLink ID= "zfban " runat= "server " NavigateUrl= ' <%# Eval( "CreditCard ", "UserOrdersDetail.aspx?id={0} ") %> '
Text= "立即支付 " Visible= "False "> </asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>


cs:

HyperLink zfban = (HyperLink)GridView1.FindControl( "zfban ");
Label ddzt = (Label)GridView1.r.FindControl( "ddzt ");

if (ddzt.Text == "等待付款 ")//这行出错
{
zfban.Visible = true;
}
else
{
zfban.Visible = false;


}

现在提示:异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

[解决办法]
给你个简单的解决办法,不用写代码处理,只要在html代码中改动,如下:
<asp:HyperLink ID= "zfban " runat= "server " NavigateUrl= ' <%# Eval( "CreditCard ", "UserOrdersDetail.aspx?id={0} ") %> '
Text= "立即支付 " Visible= ' <%# Eval( "Status ").ToString()== "等待付款 " %> '> </asp:HyperLink>


这样就ok了,但需要注意,你的这个Status字段值若为null的话就需要再进行处理,如下:
Visible= ' <%# Eval( "Status ")==null?false:Eval( "Status ").ToString()== "等待付款 " %>

读书人网 >asp.net

热点推荐