如何在DataTable中添加表、列字段?NewRow()【上】

来源:互联网 发布:关于做好网络司法拍卖 编辑:程序博客网 时间:2024/05/19 09:14

如何从TextBox文本编辑框中的数据填充到DataTable中?这个我一直都记不住,也容易混乱,原谅我的笨,脑子转不过来。

我在这里也总结一下,希望能起到记忆和理解,也能帮助初学者一起来学习。好了,我们直入主题了。还是老办法,案例学习知识。

情景回放《注意》这里的所有控件都是放在AJAX的updatapannel中的,并且要在页面Load中的使用 if (!IsPostBack){ }中


我要将上面TextBox的内容添加到下面的GridView中,如何实现?各个字段的信息我这就详说了,不明白的就直接留言给我。

效果】输入信息到TextBox,点击“添加”按钮,填充到GridView中显示,一次添加一行数据。

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

方法

(1)自定义一个DataTable空白表,然后为空白的表添加列字段。

        /// <summary>
        /// 创建提交信息容器
        /// </summary>
        private void createAddContainer()
        { 

           //思路:【数据集ds】中有【数据表格dt】,表格中有【数据列columns】,然后才有【数据Rows】
            DataSet dsFoodInformation = new DataSet();          //数据集
            DataTable dtFoodInformation = new DataTable();  //数据表

            //下面的都是添加表格的列名:表.列.Add(字段,typeof(类型))
            dtFoodInformation.Columns.Add("Food",typeof(string));
            dtFoodInformation.Columns.Add("SupplierID", typeof(int));
            dtFoodInformation.Columns.Add("ClassID", typeof(int));
            dtFoodInformation.Columns.Add("Unitvolume", typeof(string));
            dtFoodInformation.Columns.Add("Unitprice",typeof(decimal));
            dtFoodInformation.Columns.Add("Inventory",typeof(int));
            dtFoodInformation.Columns.Add("Ordernumber", typeof(int));
            dtFoodInformation.Columns.Add("Safenumber", typeof(int));
            dtFoodInformation.Columns.Add("NotSale", typeof(string));
            dtFoodInformation.Columns.Add("ID_Sumbit", typeof(decimal));
            dtFoodInformation.Columns.Add("Id_Department", typeof(decimal));
            dsFoodInformation.Tables.Add(dtFoodInformation); 

           //格式:数据集.数据表.数据列(ds.Tables.Add(columns))
            ViewState["FoodInformation"] = dsFoodInformation; 

              //这个是web页面的生命周期内容,不多说了
        }

(2)将具体数字,也就是每一行的数据,填充到Datatable中去,然后在绑定到GridView

protected void BtnAdd_Click(object sender, EventArgs e)
        {
            if (txtFoodName.Text!="") //检测是否为空
            {
                DataRow dr = ((DataSet)ViewState["FoodInformation"]).Tables[0].NewRow();

               //其实就是 DataRow dr =ds.Tables[0].NewRow();
                 //下面就是逐个填充到每一列中                

                dr["Food"] = txtFoodName.Text.Trim();
                dr["SupplierID"] = txtSupplier.Text.Trim();
                dr["ClassID"] = txtClassID.Text.Trim();
                dr["Unitvolume"] = txtUnitNumber.Text.Trim();
                dr["Unitprice"] = txtUnitprice.Text.Trim();
                dr["Inventory"] = txtInventory.Text.Trim();
                dr["Ordernumber"] = txtOrdernumber.Text.Trim();
                dr["Safenumber"] = txtSafenumber.Text.Trim();
                if (chkNotSale.Checked==true)
                {
                    dr["NotSale"] = "是";
                } 
                else
                {
                    dr["NotSale"] = "否";
                }
                dr["ID_Sumbit"] = Convert.ToDecimal(Session["USER_ID"]);
                dr["Id_Department"] = Convert.ToDecimal(Session["WSH_ID"]);
                ((DataSet)ViewState["FoodInformation"]).Tables[0].Rows.Add(dr);

                 //其实就是ds.Tables[0].Rows.Add(dr);这样就填充到了每一行了

                  //意思为:指定表的行进行添加具体数据信息

                  //除了上面哪一种,我们还可以用集合的方法进行如下:(只是举例子说明)

 //DataRowdr = ((DataSet)ViewState["DS_PRODUCTPLAN"]).Tables[0].NewRow();
                //
dr.ItemArray = new object[] { 
                    //ddlYear.SelectedItem.Text.Trim(), 
                   // ddlQuarter.SelectedItem.Text, 
                   // ddlItem.SelectedItem.Text ,
                    //ddlUnit.SelectedItem.Text,
                    //txtYearPlan.Text };

 // ((DataSet)ViewState["DS_PRODUCTPLAN"]).Tables[0].Rows.Add(dr);
                bindGdvFoodInformation();  //绑定显示
                BtnReset_Click(sender,e);  //清空
            } 
            else
            {
                msgbox.AjaxResponeSrcipt(UpdatePanel1,this.GetType(),"请填写完整的信息!");
            }
        }

(3)将DataTable数据绑定到GridView表格中

/// <summary>
        /// 动态绑定DataGridView数据源
        /// </summary>
        public void bindGdvFoodInformation()
        {
            if (((DataSet)ViewState["FoodInformation"])!=null&&((DataSet)ViewState["FoodInformation"]).Tables.Count > 0 && ((DataSet)ViewState["FoodInformation"]).Tables[0].Rows.Count > 0)
            {
                trFoodinformation.Style.Value = "";
                gdvFoodInformation.DataSource = (DataSet)(ViewState["FoodInformation"]);
                gdvFoodInformation.DataBind();

            } 
            else
            {
                gdvFoodInformation.DataSource = null;
                gdvFoodInformation.DataBind();
                trFoodinformation.Style.Value = "display:none";
            }
        }

【【完毕 】】

**************************************************************************************************

///////////////////【方法一】 举例                     

 DataRow dr = ((DataSet)ViewState["Gv"]).Tables[0].NewRow();
                        dr["Num_File"] = numfile;
                        dr["FileNum"] = filenum;
                        dr["DutyMan"] = dutyman;
                        dr["Pages"] = page;
                        dr["Topic"] = title;
                        if (!String.IsNullOrEmpty(note))
                            dr["Rmark"] = note;
                        ((DataSet)ViewState["Gv"]).Tables[0].Rows.Add(dr);

//也就是说是ds.Tables[0].Rows.Add(dr);

                       //*******【方法二】举例

                DataRow dr = ((DataSet)ViewState["DS_PRODUCTPLAN"]).Tables[0].NewRow();
                dr.ItemArray = new object[] { 
                    ddlYear.SelectedItem.Text.Trim(), 
                    ddlQuarter.SelectedItem.Text, 
                    txtRemark.Text,
                    Convert.ToDecimal(Session["USER_ID"]),
                    Convert.ToDecimal(Session["WSH_ID"])};
                ((DataSet)ViewState["DS_PRODUCTPLAN"]).Tables[0].Rows.Add(dr);

//也就是说是:ds.Tables[0].Rows.Add(dr);

0 0