2011-12-15 82 views
2

我创建了一个按钮,应该在updatepanel中查看消息。 我通过代码动态添加,因为按钮的数量与他们收到的消息数量有关。我需要按钮来显示标签。有任何想法吗?如何为动态添加的按钮创建方法。 asp.net C#

这是我的代码: 我觉得范围限于循环的问题。我要改变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到全球variabe和然后点击另一个按钮,将主题字段与数据库进行比较并显示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(); 
+1

你能给一个SSCCE(http://sscce.org/),并请说明你尝试过什么,失败了,你的预期结果 – 2011-12-15 13:40:51

+0

你是想将事件处理程序添加到按钮,这样什么它点击了什么?如果是这样,你在寻找服务器端还是客户端? 或者你是否试图根据与哪个消息相关的消息更改该按钮的文本/标识符? – Rozwel 2011-12-15 14:24:03

回答

1

你知道这么简单的东西吗?

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