【问题标题】:How to create method for a dynamically added button. asp.net C#如何为动态添加的按钮创建方法。 ASP.NET C#
【发布时间】:2012-01-21 04:47:33
【问题描述】:

我创建了一个按钮,用于在更新面板中查看消息。 我通过代码动态添加,因为按钮的数量与它们收到的消息数量有关。我需要按钮来显示标签。有什么想法吗?

这是我的代码: 我觉得范围仅限于循环的问题。我打算更改 id 以增加 "lblbody" = 1+=1

$ while (reader.Read())
    {

        string strrecipient, strsender, strsubject, strbody, strdate, strviewstate;

        strdate = "Date Sent: " + reader["date"].ToString();
        strsender = "From: " + reader["sender"].ToString();
        strsubject = "Subject: " + reader["subject"].ToString();
        strbody = reader["body"].ToString();
        strrecipient = "To: " + reader["recipient"].ToString();
        if (reader["viewstate"].ToString() == "notread")
        {
            strviewstate = "UnRead";

        }
        else
        {
            strviewstate = "read";

        }
        string strName;
        int intName;
        intName = 0;
        strName = intName.ToString();


        Panel pnlNewMess = new Panel();
        pnlMess.Controls.Add(pnlNewMess);

        pnlNewMess.BorderColor = System.Drawing.Color.LightGray;
        pnlNewMess.BorderStyle = BorderStyle.Solid;
        pnlNewMess.BorderWidth = 1;


        Label lbldate = new Label();
        Label lblsender = new Label();
        Label lblsubject = new Label();
        Label lblbody = new Label();
        Label lblrecipient = new Label();
        Label lblviewstate = new Label();
        Button btnView = new Button();



        lbldate.Text = strdate;
        lblsender.Text = strsender;
        lblsubject.Text = strsubject;
        lblbody.Text = strbody;
        lblrecipient.Text = strrecipient;
        lblviewstate.Text = strviewstate;
        btnView.Text = "View Message";
        btnView.ID = strsubject;
        lblbody.Visible = false;
        lblrecipient.Visible = false;
        lblviewstate.Visible = false;
        //lblbody.ID = "lblBody" + strName;


        pnlNewMess.Controls.Add(lblrecipient);
        pnlNewMess.Controls.Add(new LiteralControl("<br />"));
        if (lblviewstate.Text == "notread")
        {
            pnlNewMess.Controls.Add(new LiteralControl("<div class='clsmess' style='background-image:url('images/unread.png'); color:white;'>"));
        }
        else
        {
            pnlNewMess.Controls.Add(new LiteralControl("<div class='clsmess' style='background-image:url('images/read.png'); color:white;'>"));

        }
        pnlNewMess.Controls.Add(lbldate);
        pnlNewMess.Controls.Add(lblsubject);
        pnlNewMess.Controls.Add(lblsender);

        pnlNewMess.Controls.Add(btnView);
        pnlNewMess.Controls.Add(new LiteralControl("</div>"));
        pnlNewMess.Controls.Add(lblviewstate);

        pnlNewMess.Controls.Add(new LiteralControl("<br />"));
        pnlView.Controls.Add(lblbody);

        pnlMess.Controls.Add(pnlNewMess);





    }

我尝试的唯一方法是为将主题 lbl.text 设置为全局变量的按钮设置单击事件,然后单击另一个按钮,将主题字段与数据库进行比较并显示 lblbody。

 btnview.text = lblsubject.text;

SqlCommand CMretMess = new SqlCommand("SELECT body FROM [message] WHERE subject='" + clsGlobals.myGlobals.strSub + "'", connection);
    lblBody.Text = CMretMess.ExecuteScalar().ToString();
    connection.Close();

【问题讨论】:

  • 您能否提供一个 SSCCE (sscce.org),并请说明您尝试了什么、失败了什么以及您的预期结果是什么
  • 您是否尝试向按钮添加事件处理程序,以便在单击时执行某些操作?如果是这样,您是在寻找服务器端还是客户端?还是您只是想根据按钮相关的消息更改按钮的文本/标识符?
  • 是的,它只是使与用户单击的主题相关的 lblbody 可见。它本质上是一个消息系统。

标签: c# asp.net forms dynamic web


【解决方案1】:

你能做这么简单的事情吗?

btnView.Click += (sender, e) => {
    lblbody.Visible = true;
};

【讨论】:

  • 我明天试试。谢谢。唯一的问题是为每条消息分配一个特定的值。因此,当您单击按钮时,它会获取与之相关的主题并显示主体。我可以使用sql,我还不完全确定。
猜你喜欢
  • 1970-01-01
  • 2013-06-18
  • 2014-05-21
  • 1970-01-01
  • 1970-01-01
  • 2016-06-29
  • 2011-05-01
  • 2021-07-08
  • 2020-10-30
相关资源
最近更新 更多