我尝试向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();
}
答案 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;