页面中有个DataList控件,其中的ItemTemplate中放置了一个ImageButton1。我在后台初始化时为每一行的ImageButton1的AlternateText属性都赋了不同的值。也即:......      
  for (int i = 0; i <= downlist1.Items.Count - 1; i++)
        {
            DataRowView mydrv;
            mydrv = ds.Tables["tb_downloads"].DefaultView[i];
            ImageButton ibtn1 = ((ImageButton)downlist1.Items[i].FindControl("ImageButton1"));
            ibtn1.AlternateText = Convert.ToString(mydrv"filename"]);           
        }现在我要在ImageButton1_Click()事件代码中引用当前ImageButton的AlternateText属性的值,如:string abc = ImageButton1.AlternateText; 结果报错:'上下文不存在ImageButton2'。请问该如何引用呢? 谢谢!

解决方案 »

  1.   

    ImageButton ibtn1 = ((ImageButton)downlist1.Items[i].FindControl("ImageButton1"));
    string abc =ibtn1.text;
      

  2.   

    结果报错:'上下文不存在ImageButton2'。 ??请楼主搞清楚,是 ImageButton2 还是 ImageButton1?
    我怎么都晕了..
      

  3.   

    Sorry, 是我打错了,是ImageButton1。也许我说得不清楚,现在我是想在ImageButton1_Click()事件中引用当前ImageButton1的AlternateText的值。如:
    protected void ImageButton1_Click()
    {
        string abc = ImageButton1.AlternateText;    //就这里出错!
    }
      

  4.   

    protected void ImageButton1_Click(object sender ,EventArgs e)
    {
        ImageButton imageButton = sender as ImageButton;
        string abc = imageButton.AlternateText;   
    }
      

  5.   

    DataList 被创建后 你的 ImageButton1的 已经不在是这个名字了 ASP.ENT 自动给它创建了名字 
    你要在DataList 创建时动态绑定单击事件for (int i = 0; i <= downlist1.Items.Count - 1; i++)
            {
                DataRowView mydrv;
                mydrv = ds.Tables["tb_downloads"].DefaultView[i];
                ImageButton ibtn1 = ((ImageButton)downlist1.Items[i].FindControl("ImageButton1"));
                ibtn1.AlternateText = Convert.ToString(mydrv"filename"]); 
              this.ImageButton1.Click += new System.Web.UI.ImageClickEventHandler(this.ImageButton1_Click);
            }