这样的情况,我通常使用模板列解决。模板列具有很高的灵活性,能插入一些特殊的控件。另外,也可以使用数据绑定到一个函数(这个函数至少应该是Protected),向函数传递当前列用到的数据,然后在函数中进行处理后返回需要的结果。比如:
<asp:label id=Label1 Text='<%#Sex(DataBinder.Eval(Container.DataItem,"Sex"))%>'/>然后,在CS中:
protected string Sex(object oSex)
{
   return Convert.ToBoolean(oSex)?"男":"女";
}当然,这个例子可以把判断字段值后的显示内容可以放在ASPX的绑定代码中处理,这里只是举个例子。

解决方案 »

  1.   

    datagrid1.Columns(8).Hidden = True
      

  2.   

    To  triout:    我要实现这样一来的效果, 应该如何做:    ASP 中:       <%for i= 1 to rs.recount %>  
           <%if rs("isShowImg")=true then %>         <img src="<% rs("imgName") %>">       <%end if%>
        <%next%>
    也就就是用字段rs("isShowImg")的值来判断控制是否显示图片.如果用.net中的datalist中帮定的数据, 如何来控制?
      

  3.   

    <asp:TemplateColumn SortExpression="StatusCode" HeaderText="C"> <ItemTemplate>
    <%# GetStatusImage(Container.DataItem,"StatusCode") %>
    </ItemTemplate>
    </asp:TemplateColumn>在cs:
    protected string GetStatusImage(object item,string name)
    {

    string status=((DataRowView)item)[name].ToString();
    switch(status)
    { case "4": return "<img src='../../Images/ico_18_sales.gif'  alt='"+DBMrm.GetString("Quote")+"' />"; //quoted
    case "5": return "<img src='../../Images/ico_18_order.gif'  alt='"+DBMrm.GetString("Order")+"' />"; //quoted

    }
    return "<img src='../../Images/ico_empty.gif'  />";
    }
      

  4.   

    很清楚, 谢谢, 还有简单的方法? 感觉.net弄这个比asp还来的复杂, 还不如asp循环, 能否用循环来解决呢?
      

  5.   

    这是个思路的问题,以前写asp,数据从数据库检索出来,是直接体现到前台,然后对数据进行判断,是否显示,显示哪些。而现在.net,把数据从数据库检索出来后,是fill到一个一个DataTable中,在这时候,你应该做的就是对这些 DataTable进行数据检索,有用的就用,不要用的,就丢掉。当DataTable中只剩下自己所需要的数据时,前台进行简单的数据绑定就好了。.net一定要学会把前后台分离。否则不又走回asp了?
      

  6.   

    谢谢楼上的, 说的有道理. 
    但是, 这样的情况其实也是存在的: 
    fill到datatable的数据记录中, 都是要显示的了,只是某些行要显示图片, 某些行不显示图片字段,所有行剩下的字段还是要显示的. 这样的情况, 也就是datatable的数据已经不能在后台再过滤了, 就要用这样的判断了, 你说是吗?
      

  7.   

    没有上网,所以没有看到你的再次询问。你后来的问题可以这样解决的:<asp:TemplateColumn SortExpression="StatusCode" HeaderText="C">
    <ItemTemplate>
    <asp:Image id=Image1 RunAt=Server Visible='<%#DataBinder.Eval(Container.DataItem,"isShowImg")%>' ImageUrl='<%#DataBinder.Eval(Container.DataItem,"imgName")%>'/>
    </ItemTemplate>
    </asp:TemplateColumn>用这种方法不需要额外的CS代码编写。