如何从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);