日期:2014-05-18  浏览次数:20503 次

请问我怎么解决这个判断问题?
gridview控件
 <asp:TemplateField HeaderText="状态" SortExpression="State">
 <ItemTemplate>
  <%#((bool)Eval("state"))?"在用":"作废"%>
</ItemTemplate>
 <ItemStyle HorizontalAlign="Center" /></asp:TemplateField>


现在有一列,我是根据数据库中查询的state来判断是填写 "在用"还是"作废"

现在的问题是:当能查询到记录时 状态 这一列可以正常填写;而查询不到记录是 state也就不存在了,程序就会运行出错

请问怎么办?

------解决方案--------------------
法一:

<%# Eval("state") == "true" ? "有用" : Eval("state") == "false"?"作废":"其他"%>

法二
查询的时候在数据库中用case when 来进行判断


法三

在后台写个方法 来行进判断

public string GetState(bool state)
{

//根据state值来返回不同的字串
}

在gridview中绑中调用

<%# GetState((bool)Eval("State")) %>
------解决方案--------------------
如果你确实一定要用一个假的数据行去绑定GridView,那么就不应该简单地在DataTable中增加一行,还要在代码中仔细地考虑每个列是否需要设置初始值得问题。