DataList显示表A的数据,其中有字段A1值为true或false,我想程序自动判断如果为true ,则显示DataList的B1,我程序如下:aspx:
<asp:DataList ID="DataList1" runat="server" DataKeyField="Id" Width="620px" OnItemDataBound="DataList1_ItemDataBound">cs:
    protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            Label TuanGouORLiShouLabel = (Label)e.Item.FindControl("A1");
            string TGOrLS = A1.Text;
            Response.Write(TGOrLS);//全部A1的字段全显示出来了,没有办法进行一行进行一次判断后显示数据。
            ////if (TGOrLS == "true")
            ////{            ////    HyperLink HyperLink5 = (HyperLink)e.Item.FindControl("HyperLink5");
            ////    HyperLink5.Visible = false;            ////}        }    }但我在调试时发现TGOrLS把全部A1的字段全显示出来了,全部A1的字段全显示出来了,而我想达到的却是一行数据进行判断一次,然后显示相关控件。求解

解决方案 »

  1.   

    private string GetValue(string str1,string str2)
    {
    if(str=="false")
    return str1;
    else
    return str2;
    }:)
      

  2.   

    有多少条数据,itemdatabound处理函数就会执行多少次,而不是只执行一次
    而且应该从数据源的每一行来取值进行比较protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
    {
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
    string TGOrLS = ((DataRowView)e.Item.DataItem).Row["A1"].ToString();
    if (TGOrLS == "true")
    { HyperLink HyperLink5 = (HyperLink)e.Item.FindControl("HyperLink5");
     HyperLink5.Visible = false;}}}
      

  3.   

    这里的A1指的是数据源的相应的字段名,不是Label的id
      

  4.   

    简单问题复杂化,干嘛要用ItemDataBound事件?还放这么多控件。直接绑定不就完了。
    <%# Eval("字段").ToString() == "true" ? "等于true时内容" : "不等于true时内容" %>