Как создать метод для динамически добавленной кнопки.asp.net C # - PullRequest
2 голосов
/ 15 декабря 2011

Я создал кнопку, которая должна просматривать сообщение в панели обновления. Я динамически добавляю код, поскольку количество кнопок зависит от того, сколько сообщений они получают. Мне нужна кнопка для отображения метки. Есть идеи?

Вот мой код: Я чувствую, что проблема в том, что область действия ограничена циклом. Я собирался изменить идентификатор, чтобы увеличить "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 в глобальную переменную, а затем щелчком другой кнопки сравнил бы поле темы с базой данных и отобразил тело lbl.

 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();

1 Ответ

1 голос
/ 16 декабря 2011

Не могли бы вы сделать что-нибудь простое?

btnView.Click += (sender, e) => {
    lblbody.Visible = true;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...