想根据数据库里的数据确定label和button的属性
protected void Page_Load(object sender, EventArgs e)
    {
        string Number, Title, Content, Name, Time, Havefile = "0", Filename = "";
        int Count, AnsCount;
        string connectionString = constr;
        SqlConnection con = new SqlConnection(connectionString);
        string cmdtext = "SELECT * FROM PUB_INFO WHERE Pub_Num=" + Request.Params[0].ToString();
        SqlCommand cmd = new SqlCommand(cmdtext, con);
        con.Open();
        SqlDataReader dr = cmd.ExecuteReader();
        while (dr.Read())
        {
            Number = dr.GetValue(0).ToString();
            Title = dr.GetValue(1).ToString();
            Content = dr.GetValue(2).ToString();
            Name = dr.GetValue(3).ToString();
            Time = dr.GetValue(4).ToString();
            Count = Convert.ToInt32(dr.GetValue(5).ToString());
            AnsCount = Convert.ToInt32(dr.GetValue(6).ToString());
            Havefile = dr.GetValue(7).ToString();
            Filename = dr.GetValue(8).ToString();
        }
        if (Havefile == "0")
        {
            ((Button)DataList1.Items[0].FindControl("Button1")).Visible = false;
            ((Label)DataList1.Items[0].FindControl("Label7")).Text = "无附件";
        }
        else
        {
            ((Button)DataList1.Items[0].FindControl("Button1")).Visible = true;
            ((Button)DataList1.Items[0].FindControl("Button1")).Text = Filename;
            ((Label)DataList1.Items[0].FindControl("Label7")).Text = "";
        }
    }
每次都是页面读取出来时两个控件的属性都没有值啊,点一个botton后才显示值,求高手指导!!如果

解决方案 »

  1.   

    下断点一步步调试。看你的代码如何执行的。
    if (Havefile == "0")
      {
      ((Button)DataList1.Items[0].FindControl("Button1")).Visible = false;
      ((Label)DataList1.Items[0].FindControl("Label7")).Text = "无附件";
      }
      else
      {
      ((Button)DataList1.Items[0].FindControl("Button1")).Visible = true;
      ((Button)DataList1.Items[0].FindControl("Button1")).Text = Filename;
      ((Label)DataList1.Items[0].FindControl("Label7")).Text = "";
      }
    这里下断点
      

  2.   

    页面首次加载,记得加if(!IsPostBack)
    protected void Page_Load(object sender, EventArgs e)
    {
       if(!IsPostBack)
       {

       
          string Number, Title, Content, Name, Time, Havefile = "0", Filename = "";
      int Count, AnsCount;
      string connectionString = constr;
      SqlConnection con = new SqlConnection(connectionString);
      string cmdtext = "SELECT * FROM PUB_INFO WHERE Pub_Num=" + Request.Params[0].ToString();
      SqlCommand cmd = new SqlCommand(cmdtext, con);
      con.Open();
      SqlDataReader dr = cmd.ExecuteReader();
      while (dr.Read())
      {
      Number = dr.GetValue(0).ToString();
      Title = dr.GetValue(1).ToString();
      Content = dr.GetValue(2).ToString();
      Name = dr.GetValue(3).ToString();
      Time = dr.GetValue(4).ToString();
      Count = Convert.ToInt32(dr.GetValue(5).ToString());
      AnsCount = Convert.ToInt32(dr.GetValue(6).ToString());
      Havefile = dr.GetValue(7).ToString();
      Filename = dr.GetValue(8).ToString();
      }
      if (Havefile == "0")
      {
      ((Button)DataList1.Items[0].FindControl("Button1")).Visible = false;
      ((Label)DataList1.Items[0].FindControl("Label7")).Text = "无附件";
      }
      else
      {
      ((Button)DataList1.Items[0].FindControl("Button1")).Visible = true;
      ((Button)DataList1.Items[0].FindControl("Button1")).Text = Filename;
      ((Label)DataList1.Items[0].FindControl("Label7")).Text = "";
      }
      }
      }
      

  3.   

    是datalist的名字啊……
    datalist里面有个button和label控件
      

  4.   

    额,主要就是想从数据库读取Havefile的值,根据它的不同改变datalist里面label和button的text的值,其他的不用看
      

  5.   

    我看其他网上说可能应该是pageload执行时控件还没有建立,换了一种方法,结贴了