DataList根据值显示数据的问题
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的字段全显示出来了,而我想达到的却是一行数据进行判断一次,然后显示相关控件。求解。。。
------解决方案--------------------private string GetValue(string str1,string str2)
{
if(str== "false ")
return str1;
else
return str2;
}
:)
------解决方案--------------------有多少条数据,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;
}
}
}