更改数据列表中标签的可见性

时间:2014-06-03 12:10:32

标签: asp.net c#-4.0

如何使用asp.net和C#-4.0更改标签与数据列表的可见性?我尝试了以下代码,但遗憾的是它无效:

protected void Page_Load(object sender, EventArgs e)
    {

        if (!IsPostBack)
        {

            viewall();

        }

    protected void viewall()

    {
        MySqlCommand objacess = new MySqlCommand();

        objacess.CommandText = "select * from product_tbl ";

        DataTable dobj = new DataTable();
        dobj = objDataAccess.GetRecords(objacess);
        for (int i = 0; i < dobj.Rows.Count; i++)
        {
            string d = dobj.Rows[i]["pdiscount"].ToString();
            int di = Convert.ToInt32(d);
            if (di > 0)
            {
                Label lbldisc = (Label)DataList1.FindControl("lbl_discount");

               lbldisc.Visible=true; 
            }
        }

    DataList1.DataSource = dobj;
    DataList1.DataBind();
}

当我尝试此操作时,我收到以下错误

  

错误:对象引用未设置为对象的实例。

2 个答案:

答案 0 :(得分:0)

亲爱的朋友,你的代码没有找到标签控件,这就是为什么它给你这个错误而我们所有的数据绑定控制都正在处理索引所以改变你这一行

Label lbldisc = (Label)DataList1.FindControl("lbl_discount");

以下

Label lbldisc = (Label)DataList1.item[i].FindControl("lbl_discount");

答案 1 :(得分:0)

你需要在绑定值后编写隐藏代码。

//bind value to datalist
DataList1.DataSource = dobj;
DataList1.DataBind();
//after binding hide the label
for (int i = 0; i < dobj.Rows.Count; i++)
{
    string d = dobj.Rows[i]["pdiscount"].ToString();
    int di = Convert.ToInt32(d);
    if (di > 0)
    {
        Label lbldisc = (Label)DataList1.FindControl("lbl_discount");
        lbldisc.Visible=true; 
    }
}