当前位置:编程学习 > C#/ASP.NET >>

急!Datalist控件中添加image控件,实现消息已读、未读功能,可是一直不能实现效果,求高手帮忙啊


消息如果已读,数据库状态值为“1”,则image控件隐藏(即上图“new”标记消失),如消息未读,数据库状态值为“0”,则image控件显示(即上图“new”显示),可是不管值为多少,image一直隐藏不了,求解啊,做了一天了,还是解决不了


 protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
    {
        Image im = e.Item.FindControl("Image1") as Image;
        string recuser = Session["username"].ToString();
        string sqlconn = "select*from message where recuser='" + recuser + "'";
        SqlDataReader sdrd = db.DataReader(sqlconn);
        try
        {
            if (sdrd.Read())
            {
                ;
                if ((sdrd.GetInt32(5)) == 1)//获取第6个属性值,并判断
                {
                    im.Visible = false;
                }
                else
                { im.Visible = true; }
            }
        }

        catch (Exception ex)
        {
            Response.Write("<script language=javascript>alert('" + ex.Message.ToString() + "')</script>");
        }
    }

--------------------编程问答-------------------- 设置断点,单步调试。看有没有执行到sdrd.GetInt32(5),以及结果是什么,应该就找到原因了。 --------------------编程问答--------------------
 if ((sdrd.GetInt32(5)) == 1)

这个值应该不等于1吧 --------------------编程问答-------------------- 这不需要写程序代码,在你的DataList的模板中以 Eval 方式为 visible 属性设置绑定表达式就行了。 --------------------编程问答-------------------- 通常,为界面层准备数据的“前端model”层代码(例如某种数据源控件)进行查找操作时,就已经将数据组合在一起,而绝不会去搞什么临时 select from message  操作。

其次,在设计模板时,对于这么简单的东西,会写为
..... Visible='<%# Eval((int)flag)!=1) %>' .....
这样的属性定义,你只要轻巧地在设计中写上这个直观的设计代码就行了,不需要写间接地、繁琐的c#程序。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,