添加新行

时间:2015-10-06 16:16:47

标签: sql asp.net gridview ado.net

我尝试向GridView添加新值,稍后将其传递给Cache and DataSet和底层SQL数据库。

这是我的代码,但我无法弄清楚该行上的内容" dataRow [" ID"] ="如你看到的。其他一切正常,如果我只是给出" ID"其他值将被添加到数据库中。任何不存在的数字。

protected void insertStudent_Click(object sender, EventArgs e)
    {
        DataSet dataSet = (DataSet)Cache["DATASET"];

        //DataRow dataRow = dataSet.Tables["Students"].Rows.Find(e.Keys["ID"]);

        dataSet.Tables["Students"].PrimaryKey = new DataColumn[] { dataSet.Tables["Students"].Columns["ID"] };

        DataRow dataRow = dataSet.Tables["Students"].NewRow();

        dataRow["ID"]           =

        dataRow["FirstName"]    = ((TextBox)GridView1.FooterRow.FindControl("txtFirstName")).Text;
        dataRow["LastName"]     = ((TextBox)GridView1.FooterRow.FindControl("txtLastName")).Text;
        dataRow["Gender"]       = ((DropDownList)GridView1.FooterRow.FindControl("DropDownListGender")).SelectedValue;
        dataRow["Course"]       = ((DropDownList)GridView1.FooterRow.FindControl("DropDownListCourse")).SelectedValue;
        dataRow["Grade"]        = ((DropDownList)GridView1.FooterRow.FindControl("DropDownListGrade")).SelectedValue;

        Cache.Insert("DATASET", dataSet, null, DateTime.Now.AddHours(24), System.Web.Caching.Cache.NoSlidingExpiration);

        dataSet.Tables["Students"].Rows.Add(dataRow);

        GridView1.DataSource = (DataSet)Cache["DATASET"];
        GridView1.DataBind();
    }

2 个答案:

答案 0 :(得分:0)

根据Andrei在上面的评论中,将表格中的ID列设置为:

CREATE TABLE sample( ID INT IDENTITY(1,1) NOT NULL,
                     FirstName VARCHAR(50) )) -- And your rest of the details

无需向ID添加值,它将自行增加。插入其他值,当您从数据库中读取时,您的ID列会增加。

P.S。将其他值插入表格时,请勿包含ID列。

谷歌“SQL INCREMENT”了解更多信息。

答案 1 :(得分:0)

这个问题的答案是在缓存数据集中的ID列上使用AutoIncrement。然后,当您保存到DB时,添加的行将在DB中获得正确的ID。

dataSet.Tables["Students"].Columns["ID"].AutoIncrement = true;