繁体   English   中英

C#—无法将类型'System.Web.UI.Control'隐式转换为'System.Web.UI.WebControls.CheckBox'

[英]C# — Cannot implicitly convert type 'System.Web.UI.Control' to 'System.Web.UI.WebControls.CheckBox'

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

总数是一个变量,它是复选框的编号,用于确定已选中哪个复选框。 在其设计上或.aspx代码中,我将所有复选框ID更改为C1,C2,C3,依此类推。 这就是为什么需要“ C” + total来使其等于其ID的原因。 但是,我在ch = Page.FindControl(“ C” + total)时出错。 有谁知道如何解决这个问题? 声明错误吗? 还是我忘记在代码中添加一些内容?

谢谢!

这是因为您尝试将父类( System.Web.UI.Control )设置为子类( System.Web.UI.WebControls.CheckBox ):

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

使用关键字as正确分配它:

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

请注意,你可能会得到nullSystem.Web.UI.Control的类型是不System.Web.UI.WebControls.CheckBox

声明“ CheckBox ch = new CheckBox();”看起来很奇怪。 在for循环中。 尝试在for循环之前声明它。 我可能错了...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM