【问题标题】:Adding button to panel dynamically and getting it's parent ID动态添加按钮到面板并获取它的父 ID
【发布时间】:2012-03-25 16:17:05
【问题描述】:

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

  1. 面板 --> 父级。

  2. 按钮。

  3. 标题文本框。

  4. 描述文本框。

在每个面板中,我都有一个按钮,单击该按钮会将更改的信息发送到存储照片信息的服务器 (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?

抱歉我的英语不好,感谢您的帮助。

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    不确定,但您在寻找ClientID 属性吗? (button.Parent.ClientID)

    编辑:

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

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

    【讨论】:

    • 我刚刚尝试过,我得到了相同的结果(panel10)还有其他想法吗?
    • 您要寻找的结果是什么?
    • 结果应该由按钮 id 名称的父级更改。
    • 查看更新的答案。您正在引用设置为您添加到面板的最后一个按钮的button 变量。您应该引用调用单击事件的按钮。调用者作为第一个参数obj 传递给button_Click 函数。
    • 正是我想要的,谢谢:)
    猜你喜欢
    • 2012-07-22
    • 1970-01-01
    • 2013-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多