前台代码:
<table class="style2">
                <caption style="font-family: 宋体, Arial, Helvetica, sans-serif; font-size: larger; font-weight: bold; color: #000000; background-color: #FFCCFF">
                    订单信息</caption>
                <tr>
                    <td>
                        订单编号:</td>
                    <td>
                        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td>
                        客户编码:</td>
                    <td>
                        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td>
                        配方编号:</td>
                    <td>
                        <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td>
                        订购日期:</td>
                    <td>
                        <asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td>
                        需求日期:</td>
                    <td>
                        <asp:TextBox ID="TextBox5" runat="server"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td>
                        单&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 价:</td>
                    <td>
                        <asp:TextBox ID="TextBox6" runat="server"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td>
                        数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 量:</td>
                    <td>
                        <asp:TextBox ID="TextBox7" runat="server"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td>
                        折&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 扣:</td>
                    <td>
                        <asp:TextBox ID="TextBox8" runat="server"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td>
                        支付方式:</td>
                    <td>
                        <asp:CheckBox ID="CheckBox1" runat="server" Text="现金" />
                        <asp:CheckBox ID="CheckBox2" runat="server" Text="银行汇款" />
                        <asp:CheckBox ID="CheckBox3" runat="server" Text="支票" />
                    </td>
                </tr>
                <tr>
                    <td colspan="2">
                        <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="提交" />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                        <asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="取消" />
                    </td>
                </tr>
            </table>
button1的onclick事件代码:
protected void Button1_Click(object sender, EventArgs e)
    {
        string ss;
        string m = "";
        string sqlconnstr = ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString;
        SqlConnection sqlconn = new SqlConnection(sqlconnstr);
        SqlCommand comm = new SqlCommand();
        comm.Connection = sqlconn;
        comm.CommandText = "insert into orders(orderid,CID,FormulaID,OrderDate,RequireDate,UnitPrice,Quantity,Discount,Payway) values(@id,@CID,@FID,@Odate,@Rdate,@price,@quantity,@discount,@payway)";
        comm.Parameters.AddWithValue("@id", TextBox1.Text);
        comm.Parameters.AddWithValue("@CID", TextBox2.Text);
        comm.Parameters.AddWithValue("@FID", TextBox3.Text);
        comm.Parameters.AddWithValue("@Odate", TextBox4.Text);
        comm.Parameters.AddWithValue("@Rdate", TextBox5.Text);
        comm.Parameters.AddWithValue("@price", TextBox6.Text);
        comm.Parameters.AddWithValue("@quantity", TextBox7.Text);
        comm.Parameters.AddWithValue("@discount", TextBox8.Text);
        for (int i = 1; i <= 3; i++)
        {
            CheckBox bc = Page.FindControl("CheckBox" + i) as CheckBox;
            if (bc.Checked)
            {
               m += bc.Text + " ";            }
        }
        comm.Parameters.AddWithValue("@payway", m.ToString());
        try
        {
            sqlconn.Open();
            comm.ExecuteNonQuery();
            ss = "alert('" + "提交成功!" + "');";
            Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "success", ss, true);
        }
        catch (Exception ex)
        {
            ss = "alert('" + "提交失败,请重新添加!" + ex.Message + "');";
            Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "success", ss, true);
        }
        finally
        {
            comm = null;
            sqlconn.Close();
            sqlconn = null;
        }
    }上面红色部分显示错误:未将对象引用设置到对象的实例。蓝色部分的代码我不知道对不对~
总共有三个checkbox,我是希望将选中的值都记录下来,可以同时选中两个以上。

解决方案 »

  1.   

    CheckBox bc = Page.FindControl("CheckBox" + i) as CheckBox;
    没有得到控件。
      

  2.   

    没有找到 CheckBox1 这个控件 
      

  3.   

    CheckBox bc = Page.FindControl("CheckBox" + i) as CheckBox;这句话要确定它findControl找到控件这样才能用bc的属性。。
      

  4.   

    XXXX xx= (XXXX)PreviousPage.Master.FindControl("ContentPlaceHolder1").FindControl("XXXX")
      

  5.   


    改成
    CheckBox bc = PreviousPage.Master.FindControl("ContentPlaceHolder1").FindControl("CheckBox" + i) as CheckBox;
    还是同样的错误
      

  6.   

    前台全部代码:
    <%@ Page Language="C#" MasterPageFile="~/母板/MasterPage.master" AutoEventWireup="true" CodeFile="order.aspx.cs" Inherits="员工_order" Title="无标题页" %><asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
        <style type="text/css">
            .style2
            {
                width: 50%;
                border-style: solid;
                border-width: 1px;
                background-color: #FFCCFF;
            }
        </style>
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
        <tr>
            <td>
                <br />
                <table class="style2">
                    <caption style="font-family: 宋体, Arial, Helvetica, sans-serif; font-size: larger; font-weight: bold; color: #000000; background-color: #FFCCFF">
                        订单信息</caption>
                    <tr>
                        <td>
                            订单编号:</td>
                        <td>
                            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            客户编码:</td>
                        <td>
                            <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            配方编号:</td>
                        <td>
                            <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            订购日期:</td>
                        <td>
                            <asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            需求日期:</td>
                        <td>
                            <asp:TextBox ID="TextBox5" runat="server"></asp:TextBox>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            单&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 价:</td>
                        <td>
                            <asp:TextBox ID="TextBox6" runat="server"></asp:TextBox>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 量:</td>
                        <td>
                            <asp:TextBox ID="TextBox7" runat="server"></asp:TextBox>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            折&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 扣:</td>
                        <td>
                            <asp:TextBox ID="TextBox8" runat="server"></asp:TextBox>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            支付方式:</td>
                        <td>
                            <asp:CheckBox ID="CheckBox1" runat="server" Text="现金" />
                            <asp:CheckBox ID="CheckBox2" runat="server" Text="银行汇款" />
                            <asp:CheckBox ID="CheckBox3" runat="server" Text="支票" />
                        </td>
                    </tr>
                    <tr>
                        <td colspan="2">
                            <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="提交" />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                            <asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="取消" />
                        </td>
                    </tr>
                </table>
                <br />
            </td>
        </tr>
    </asp:Content>
      

  7.   

    Master.FindControl("").FindControl("")
      

  8.   

    Page.Master.FindControl("") 不行吗? 那你就先不要用循环  单个取看会不会报错
      

  9.   

    ("CheckBox" + i)   
    怎么选三个?循环?
      

  10.   


    堆栈跟踪: 
    [NullReferenceException: 未将对象引用设置到对象的实例。]
       员工_order.Button1_Click(Object sender, EventArgs e) in e:\成衣织物配方成本管理系统\员工\order.aspx.cs:40
       System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
       System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
       System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
       System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
       System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565 
    我看不懂这个
      

  11.   


                foreach (Control c in form1.Controls)   //form1是表单ID
                {
                    if (c is CheckBox)
                    {
                        CheckBox ck = c as CheckBox;
                        if (ck.Checked)
                        {
                            m += bc.Text + " ";
                        }
                        
                    }
                }      
      

  12.   


    我没出现过form。。要怎么改呀?
      

  13.   

    用   CheckBoxList
    <asp:CheckBoxList ID="CheckBoxList1" runat="server">        </asp:CheckBoxList>
                        
     foreach (CheckBox ch in CheckBoxList1)
            {            if (ch.Checked)
                { 
                ......
                }
            }
      

  14.   

    用换成checkboxlist就没错误了~
    谢谢各位~