急!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