public partial class _Default : System.Web.UI.Page
{
    //插入数据后,存储过程返货的数据标识
    public int shipID;
    //获取的tbAmount的数值
    public string pl;
    protected void Page_Load(object sender, EventArgs e)
    {
        //初始化状态
        if (this.IsPostBack)
        {
            this.pl0.Visible = true;
            this.pl6.Visible = false;
            shipID = 0;
            pl = "0";
        }    }
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        //改变panle显示
        this.pl0.Visible = false;
        this.pl6.Visible = true;        //添加新船信息
        //连接数据库
        SqlConnection con = DB.CreateCon();
        con.Open();
        //这里调用了存储过程
        SqlCommand cmd = new SqlCommand("Add_Ships", con);
        cmd.CommandType = CommandType.StoredProcedure;
        //设置参数类型
        SqlParameter[] para =
        {
           new SqlParameter("@enterpriseID", SqlDbType.NVarChar,20),
           new SqlParameter("@ship_name", SqlDbType.NVarChar,20),
           new SqlParameter("@ship_age", SqlDbType.NVarChar,20),
           new SqlParameter("@linkman", SqlDbType.NVarChar,20),
           new SqlParameter("@cellphone", SqlDbType.NVarChar,20),
           new SqlParameter("@ship_length", SqlDbType.NVarChar,20),
           new SqlParameter("@ship_width", SqlDbType.NVarChar,20),
           new SqlParameter("@ship_depth", SqlDbType.NVarChar,20),
           new SqlParameter("@ship_weight",SqlDbType.NVarChar,20),
           new SqlParameter("@total_tonnage",SqlDbType.NVarChar,20),
           new SqlParameter("@net_tonnage",SqlDbType.NVarChar,20),
           new SqlParameter("@speed", SqlDbType.NVarChar,20),
           new SqlParameter("@hatch_cover", SqlDbType.NVarChar,20),
           new SqlParameter("@P_loadtype", SqlDbType.NVarChar ,20),
           new SqlParameter("@total", SqlDbType.NVarChar,20),
           new SqlParameter("@forklift", SqlDbType.NVarChar,20),
           new SqlParameter("@shipID",SqlDbType.Int)
        };        //实例化参数,添加到命令参数集合里
        foreach (SqlParameter p in para)
        {
            cmd.Parameters.Add(p);
        }        //获取页面各个textbox的数据
        cmd.Parameters[0].Value = this.ddlEnterprise.SelectedValue.ToString();
        cmd.Parameters[1].Value = this.tbShipName.Text.ToString();
        cmd.Parameters[2].Value = this.tbAge.Text.ToString();
        cmd.Parameters[3].Value = this.tbLiasion.Text.ToString();
        cmd.Parameters[4].Value = this.tbPhone.Text.ToString();
        cmd.Parameters[5].Value = this.tbLength.Text.ToString();
        cmd.Parameters[6].Value = this.tbWidth.Text.ToString();
        cmd.Parameters[7].Value = this.tbDepth.Text.ToString() ;
        cmd.Parameters[8].Value = this.tbWeight.Text.ToString();
        cmd.Parameters[9].Value = this.tbTot.Text.ToString();
        cmd.Parameters[10].Value = this.tbNet.Text.ToString() ;
        cmd.Parameters[11].Value = this.tbSpeed.Text.ToString() ;
        cmd.Parameters[12].Value = this.ddlCover.SelectedValue.ToString();
        cmd.Parameters[13].Value = this.tbP_Load.Text.ToString();
        cmd.Parameters[14].Value = this.tbAmount.Text.ToString();
        cmd.Parameters[15].Value = this.rdlForklift.SelectedValue.ToString();
        cmd.Parameters[16].Direction = ParameterDirection.Output;        //保留船舱数量
        pl = this.tbAmount.Text.ToString();
        //测是是否正常运行        try
        {
            cmd.ExecuteNonQuery();
        }
        catch (Exception)
        {
            Response.Redirect("test.htm");
        } 
        //返回添加新船的自增标识
        shipID = Convert.ToInt16(cmd.Parameters[16].Value);
        this.lb1.Text ="添加船只信息成功:船只编号为"+ shipID.ToString();        //导出新添加的数据
        DB db = new DB();
        //在创建了一个返货DATASET的类,
        DataSet ds = db.CreateDs(shipID);
        this.repShipInfo.DataSource = ds.Tables["myTable"].DefaultView;
        this.repShipInfo.DataBind();        //根据tbAmount判断显示什么输入表
        switch (pl)
        {
            case "1": this.pl1.Visible = true; break;
            case "2": this.pl2.Visible = true; break;
            case "3": this.pl3.Visible = true; break;
            case "4": this.pl4.Visible = true; break;
            case "5": this.pl5.Visible = true; break;
                
        }
后面还没写完
1.从textbox里获取数据,添加SQL成功后,可以设置一个数组,把数据保存在数组中,再后面再取出来吗?我看资料,这样做会损耗系统内存,但在内存允许的情况下,这样做会不会更加方便点?求高手指点。
2.还有就是后面的输入表switch(pl)那里,我的输出结果总是不对,tbAmount明明输入5,结果转化后输出的是第3个结果,
不知道是什么数据干扰了结果,找不出原因,求高人解答。
3,如果switch(pl)显示问题解决了,那输入问题怎么解决,是不是要写5个输入后台了,还是在自己的类中用一个方法重载,具体怎么做,希望给指条明路。

解决方案 »

  1.   

    tbAmount明明输入5,结果转化后输出的是第3个结果, 
    肯定是你赋值取值的时候弄错了撒
      

  2.   

    shipID,p1定义为属性
    通过viewstate保存
      

  3.   

    不好意思,各位大大,我昨晚有点事,没上....
    一楼的大大,是不是把textbox数据提交后,内存就自动释放了,所以,我在单独存放代码的CS中,即使设置了全局变量也无法得到pl的数据?可是我的shipID也是全局变量,因为它是过程的输出变量,所以在提交事件后,可以把返回的数据保存到全局变量中??
      switch   (pl) 
                    { 
                            case   "1 ":   this.pl1.Visible   =   true;   break; 
                            case   "2 ":   this.pl2.Visible   =   true;   break; 
                            case   "3 ":   this.pl3.Visible   =   true;   break; 
                            case   "4 ":   this.pl4.Visible   =   true;   break; 
                            case   "5 ":   this.pl5.Visible   =   true;   break; 
                                    
                    } 
    这里我根据在TextBox里输入的值,在提交事件里传给pl全局变量,然后通过这个值来判断符合那个状况,但是显示的结果和我输入的值不一样。
    同样是上面5中状况,我是不是要写5个事件引发的数据添加代码?