2016-03-20 9 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(); 

Insgesamt ist eine Variable, die Anzahl der Checkbox konvertieren, um zu bestimmen, was überprüft wurden checbox . Auf seinem Entwurf oder im .aspx Code ändere ich alle Checkbox-ID zu C1, C2, C3 und so weiter. Deshalb ist "C" + total erforderlich, um zu finden, dass es seiner ID entspricht. Ich habe jedoch einen Fehler in ch = Page.FindControl ("C" + total). Kann jemand das beheben? Ist es ein Fehler in der Deklaration? oder Ist es da etwas, das ich vergessen habe, in den Code hinzuzufügen?C# - Kann nicht implizit Typ ‚System.Web.UI.Control‘ auf ‚System.Web.UI.WebControls.CheckBox‘

Danke!

Antwort

2

Dies liegt daran, dass Sie versuchen, übergeordnete Klasse (System.Web.UI.Control) als Kind Klasse setzen (System.Web.UI.WebControls.CheckBox):

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

Beachten Sie, dass Sie bekommen können:

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

Verwenden Stichwort as es richtig zuweisen null wenn der System.Web.UI.Control nicht vom Typ System.Web.UI.WebControls.CheckBox ist.

+0

Ich habe dieses versucht, aber jetzt habe ich einen Fehler von *** Der Typ oder Namespace-Name 'WebControls' konnte nicht gefunden werden (fehlt Ihnen eine Verwendungs-Richtlinie oder eine Assembly-Referenz?) ***, obwohl ich "System.Web.UI.WebControls" verwende; an der Spitze meiner Datei. – user808317

+0

@ user808317 Wenn Sie 'system.Web.UI.WebControls' bereits verwenden, brauchen Sie das nicht. Verwenden Sie einfach 'as CheckBox', seien Sie vorsichtiger bei' Find', denn wenn es ein anderes 'Control' gibt, dessen Name mit' C' und nicht mit 'CheckBox' beginnt, erhalten Sie' null' Ausnahme 't filtere das heraus/handling 'null'' ch' – Ian

+0

@ user808317 verwendest du 'WebForms' hier? – Ian

0

Es sieht seltsam aus, "CheckBox ch = new CheckBox();" innerhalb der for-Schleife. Versuchen Sie, es vor der for-Schleife zu deklarieren. Ich könnte mich irren ...

Verwandte Themen