【问题标题】:WebUserControl Button ClickWebUserControl 按钮单击
【发布时间】:2026-01-29 06:50:01
【问题描述】:

我有一个 webusercontrol (MiniUrunControl.ascx),在这个 webusercontrol 中我添加了一个按钮,按钮点击功能是 imgButtonMini_Click。

protected void imgButtonMini_Click(object sender, ImageClickEventArgs e)
{
    DataTable _tablo = (DataTable)Session["KULLANICISEPETI"];
    foreach (DataRow _row in _tablo.Rows)
    {
        if (_row["urunid"].ToString() == lbUrunID.Text)
        {
            _tablo.Rows.Remove(_row);
            Session["KULLANICISEPETI"] = _tablo;
            break;
        }
    }

    this.Page.GetType().InvokeMember("ShowSepetBilgisi",
        System.Reflection.BindingFlags.InvokeMethod, null, this.Page, new object[] { });

}

现在,我在 Default.aspx 和 Default.aspx CodeBehind 中添加一个面板控件,如下所示;

protected void Page_Load(object sender, EventArgs e)
{
  if(ispostback==false) ShowSepetBilgisi();
}

public void ShowSepetBilgisi()
{ 
    DataTable _tablo = (DataTable)Session["KULLANICISEPETI"];

    if (_tablo == null) return;

    pnlMiniUrunler.Controls.Clear();

    foreach (DataRow _row in _tablo.Rows)
    {
        MiniUrunControl _mini = (MiniUrunControl)LoadControl("MiniUrunControl.ascx");
        _mini.SetInfo(_row["urunid"].ToString(), _row["adet"].ToString());
        pnlMiniUrunler.Controls.Add(_mini);
    }
}

好的,当运行网站时,我看到我的所有产品(面板中的 10 个 webusercontrols)都添加到面板控件中。但是当我单击 imgButtonMini button 时,所有控件都消失了,面板为空。我的按钮点击功能也不起作用。

您能帮我解决问题吗?我该如何运行按钮功能? 谢谢

【问题讨论】:

  • 如果您动态添加它,您需要确保每次都添加您的网络用户控件。
  • 嗨,我会一直这样做吗?一直以来我都会再次添加到面板中,不是吗?
  • 是的,如果您正在动态创建用户控件并添加到页面,那么您需要再次执行此操作。因此,如果您使用 LoadControl("...ascx");您需要在回发时执行此操作,否则控件将无法连接到事件。你在做这个吗?
  • 重新阅读你的代码(我之前没有时间)看起来你不是,因为你只是在第一次加载时才这样做。

标签: asp.net button click webusercontrol


【解决方案1】:

迭代主控件中的每个控件,例如您有 product.ascx 控件和 在您的 product_page.aspx 中,您有一个具有 id="pcdiv"runat="server" 的 div。现在在 C# 中以这种方式迭代:

foreach(control item in (product)div.controls.oftype(product)){
  if(item.value == 'true') {
    Response.write("Got it"); break;//incase only 1 object to iterate
  }
}

请检查控制转换,因为我没有测试此代码,但我在某些项目中使用了这个 1。

【讨论】:

    【解决方案2】:

    阅读您的代码,您只需将子控件添加到页面一次。如果您想使用这种方法,也需要在每次回发时添加它们,否则控件将消失。

    【讨论】: