首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

封存DataTable的数据

2012-12-26 
保存DataTable的数据在botton的click事件中定义datatable,当click事件完毕时,datatable也就消失,为了能保

保存DataTable的数据
在botton的click事件中定义datatable,当click事件完毕时,datatable也就消失,为了能保存datatable,需要用viewstate保存datatable的结构,在button每次click时,都将此结构载入

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            DataTable mdt = new DataTable();
            mdt.Columns.Add("ClassID");
            mdt.Columns.Add("ClassName");
            ViewState.Add("sdt", mdt);
        }
    }
    protected void btnSave_Click(object sender, EventArgs e)
    {
        DataTable dt = (DataTable)ViewState["sdt"];
        DataRow dr = dt.NewRow();
        dr["ClassID"] = txtID.Text.Trim();
        dr["ClassName"] = txtClassName.Text.Trim();
        dt.Rows.Add(dr);
        gvClass.DataSource = dt;
        gvClass.DataBind();
    }
如果想同时更新数据库的话,可以采用以下方法:
private string ConnStr = ConfigurationManager.ConnectionStrings["sqlconn"].ToString();
    private SqlDataAdapter da;
    private DataTable mdt;
    private SqlConnection conn;
    protected void Page_Load(object sender, EventArgs e)
    {
        mdt = new DataTable();
        conn = new SqlConnection(ConnStr);
        da = new SqlDataAdapter("select * from tbclass", conn);
        da.FillSchema(mdt, SchemaType.Mapped);
    }
    private void UpdateData(DataTable pDt)
    {
        SqlCommandBuilder cmdBuild = new SqlCommandBuilder(da);
        da.Update(pDt);
    }   
private DataTable GetData()
    {
        DataTable sdt=new DataTable();
        da.Fill(sdt);
        return sdt;
    }
    protected void btnSave_Click(object sender, EventArgs e)
    {
        DataRow dr = mdt.NewRow();
        dr["ClassID"] = txtID.Text.Trim();
        dr["ClassName"] = txtClassName.Text.Trim();
        mdt.Rows.Add(dr);
        UpdateData(mdt);
        gvClass.DataSource = GetData();
        gvClass.DataBind();
    }

热点排行