2016-03-20 12 views
1
int p = 0; 
int q = 0; 
p = 0; 
q = 0; 

string username = null; 
username = Session["user"]; 
int total = 0; 
for (total = 1; total <= 120; total++) { 
    CheckBox ch = new CheckBox(); 
    ch = Page.FindControl("C" + total); 

    if (ch.Checked == true & ch.Enabled == true) { 
     string query = "insert into order_master values('" + username + "','" + drpselectmovie.SelectedValue + "','" + drpselectdate.SelectedValue + "','" + drpselectshow.SelectedValue + "'," + drpselectclass.SelectedValue + ",'" + ch.ID + "'," + drpselectclass.SelectedValue + ")"; 
     SqlClient.SqlCommand cmd = new SqlClient.SqlCommand(query, cn); 
     cmd.ExecuteNonQuery(); 
     ch.Enabled = false; 
     if (total <= 72) { 
      p = p + 1; 
     } else { 
      q = q + 1; 

     } 

    } 
} 
int price = 0; 
price = p * 180 + q * 120; 
txtprice.Text = price.ToString; 
Session.Add("tickettotal", txtprice.Text); 
cn.Close(); 

合計がチェックされているchecboxかを決定するための変数のチェックボックスの数ですへ。そのデザインや.aspxコードでは、すべてのチェックボックスIDをC1、C2、C3などに変更します。そのため、「C」+合計がそのIDと同じになるように見つける必要があります。しかし、私はch = Page.FindControl( "C" + total)にエラーがあります。誰もがこれを修正する方法を知っていますか?宣言に誤りがありますか?それともコードに追加するのを忘れたのでしょうか?C# - 暗黙的にタイプを変換できません「System.Web.UI.Control」「System.Web.UI.WebControls.CheckBox」

ありがとうございます!

答えて

2

あなたは子クラス(System.Web.UI.WebControls.CheckBox)として親クラス(System.Web.UI.Control)を設定しようとするためです:正しくそれを割り当てる

ch = Page.FindControl("C" + total); 

使用キーワードas:あなたが得ることが

ch = Page.FindControl("C" + total) as CheckBox; 

注意System.Web.UI.ControlのタイプがSystem.Web.UI.WebControls.CheckBoxではない場合はnullです。

+0

私はこれを試しましたが、エラーが発生しました***型または名前空間の名前 'WebControls'が見つかりませんでした(使用しているディレクティブまたはアセンブリ参照がありませんか? )***私は 'System.Web.UI.WebControls;を使用していますが、私のファイルの一番上に。 – user808317

+0

@ user808317既に 'using System.Web.UI.WebControls'を持っていれば、その必要はありません。 'CheckBox'として' checkBox'を使用するだけです。なぜなら 'Find'をもっと注意する必要があります。なぜなら' Check'ではなく 'C'で始まる名前で他の' Control'があって、 'null'' ch'を処理するフィルタを外す – Ian

+0

@ user808317ここで' WebForms'を使用していますか? – Ian

0

"CheckBox ch = new CheckBox();"と宣言するのは奇妙です。 forループの内部。 forループの前に宣言してみてください。私は間違っている可能性があります...

関連する問題