2011-12-15 20 views
2

私はupdatepanelでメッセージを表示するはずのボタンを作成しました。 ボタンの数は、受信するメッセージの数に比例するため、コードを使って動的に追加しました。ラベルを表示するにはボタンが必要です。何か案は?動的に追加されるボタンのメソッドを作成する方法。 asp.net C#

ここに私のコードです: 私はスコープがループに限定されているという問題のように感じます。私は増加するIDを変更しようとしていた「lblbody」= 1 + = 1、私が試してみました唯一のことは、グローバルvariabeに対象lbl.textを撮影ボタンのクリックイベントを設定することでした

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





    } 

と別のボタンをクリックすると、件名フィールドとデータベースが比較され、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

あなたは何を失敗し、どのようなあなたの予想結果は –

+0

だったあなたがそのようボタンにイベントハンドラを追加しようとしている、SSCCE(http://sscce.org/)を与え、あなたがしようとしたものを説明してください可能性がありクリックすると何かしますか?もしそうなら、あなたはサーバー側またはクライアント側を探していますか? または、関連するメッセージに基づいてボタンのテキスト/識別子を変更しようとしていますか? – Rozwel

+0

はい、これは、ユーザーがクリックした件名にlblbodyを関連付けるだけです。それは本質的にメッセージシステムです。 – Det

答えて

1

あなたは、このような単純な何かをしてもらえますか?

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

明日は試してみます。ありがとう。唯一の問題は、各メッセージに特定の値を割り当てることです。ボタンをクリックすると、関連する件名が表示され、本文が表示されます。私はSQLを使用することができた、私はまだ完全にはわからない。 – Det

関連する問題