动态添加按钮到面板并获取其父ID

时间:2012-03-25 16:17:06

标签: c# asp.net

我创建了一个页面,我给管理员一个更改照片信息的方法(例如标题,描述等)页面上的所有控件都是动态添加的,因为我有多个照片库。

  1. 面板 - >父节点。

  2. 按钮。

  3. 标题文字框。

  4. 说明文字框。

  5. 在每个面板中,我都有一个按钮,当点击时,将更改的信息发送到存储照片信息的服务器(Flickr)。此按钮的单击事件是动态添加的,我想知道是否可以获取我刚刚单击的Button的父级。

    以下是我添加所有控件的代码:

     //global veriables (this is only part of the code)
     Panel panel;
     Button button;
     for (int i = 0; i < photo.Length; i++) {
         photo[i] = new FlickerImages(photoSet.MediumURLS[i], photoSet.ThumbnailURLS[i], photoSet.Titles[i], photoSet.Descreption[i]);
    
         panel = new Panel();
         panel.ID = "panel" + i;
    
         button = new Button();
         button.ID = "sendDataButton" + i;
         button.Text = "send data";
         button.Click += button_Click; //adding the event
    
         label = new Label();
         label.ID = "editLabel" + i;
    
         panel.Controls.Add(label);
         panel.Controls.Add(photo[i].CurrentImage(i)); //Image control
         panel.Controls.Add(photo[i].EditTitleTextBox(i)); //TextBox control
         panel.Controls.Add(photo[i].EditCommentTextBox(i)); //TextBox control
         panel.Controls.Add(button);
    
         Form.Controls.Add(panel);
    }
    

    以下是我添加到所有按钮的点击事件:

    void button_Click(object obj, EventArgs e) {
        Response.Write(button.Parent.ID); // i get panel10 every time this get fired.
    }
    

    我知道这可以用jQuery实现,但是可以在ASP.NET中获取按钮ID吗?

    对不起我的英文,感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

不确定,但您在寻找ClientID财产吗? (button.Parent.ClientID

编辑:

您应该在事件处理程序中引用发送按钮:

void button_Click(object obj, EventArgs e)
{
    Response.Write(((Button)obj).Parent.ID); 
}