datagrid问题 http://samples.gotdotnet.com/quickstart/aspplus/default.aspx?url=/quickstart/aspplus/doc/webdataaccess.aspx 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我对datagrid不熟,我先看看 jupiterII() 说的例子 下面的例子很好:http://www.microsoft.com/taiwan/msdn/library/2002/Feb-2002/whitepaper/vbtchtopquestionsaboutaspnetdatagridservercontrol.htm#vbtchtopquestionsaboutaspnetdatagridservercontroleditingmultiplerows public void MyDataGrid_Update(Object sender, DataGridCommandEventArgs e) { // 建立 UPDATE 命令字符串 string UpdateCmd = "UPDATE stud SET name = @name, sex = @sex, age = @age," + "address = @address WHERE stud_id = @stud_id"; SqlCommand MyCommand = new SqlCommand(UpdateCmd, myConnection); // 设定 UPDATE 命令字串中各个参数的数据类型与长度 MyCommand.Parameters.Add(new SqlParameter("@stud_id", SqlDbType.NVarChar, 10)); MyCommand.Parameters.Add(new SqlParameter("@name", SqlDbType.NVarChar, 10)); MyCommand.Parameters.Add(new SqlParameter("@sex", SqlDbType.NVarChar ,10)); MyCommand.Parameters.Add(new SqlParameter("@age", SqlDbType.Int, 4)); MyCommand.Parameters.Add(new SqlParameter("@address", SqlDbType.NVarChar ,50)); // 取得主索引键之值(此处为学生编号) MyCommand.Parameters["@stud_id"].Value = MyDataGrid.DataKeys[e.Item.ItemIndex]; string[] Cols = new string[] {"@stud_id", "@name", "@sex", "@age", "@address"}; // 取得 TableCell 物件的数目,也就是每一数据列之储存格的数目(等於 DataGrid 伺服器控制项中数据行的数目) int NumCols = e.Item.Cells.Count; // 略过第一栏与第二栏。因为第一栏是删除按钮,第二栏是编辑按钮。 for (int i = 2; i<= NumCols - 1; i++) { TextBox CurrentTextBox = (TextBox)e.Item.Cells[i].Controls[0]; string ColValue = CurrentTextBox.Text; // 检查字段(储存格)的内容是否为 Null 值 if (ColValue == "") { //Message.Text = "错误: 每一个字段都必须输入数据不允许 Null 值!"; return; } MyCommand.Parameters[Cols[i - 2]].Value = ColValue; } try { // 呼叫 ExecuteNonQuery() 方法以便针对数据来源执行 UPDATE 命令 MyCommand.ExecuteNonQuery(); // 完成更新作业后使数据行跳出编辑模式 MyDataGrid.EditItemIndex = -1; } catch (SqlException Exp) { if (Exp.Number == 2627) Message.InnerHtml = "错误: 具有相同主索引键的数据纪录已经存在。"; else Message.InnerHtml = "错误: 无法更新数据纪录,请确定各字段是否都已正确输入。"; } // 关闭连接 MyCommand.Connection.Close(); BindGrid(); } 可以。你只须将datagrid的EditItemIndex设置为你当前选中的行即可进行编辑。编辑完后可采用两种方法保存修改的数据,一:先修改dataset,然后一次行的导入到数据库,进行修改数据库二:将你datagrid中的字段和数据库中的字段进行直接对应修改 datagridview 增加有CHECKBOX得列? 关于异步传输和缓存 打开新窗体的问题,如新窗体已打开,则把已打开的窗体显示出来,否则打开新的窗体. 一个小问题,解决就给分 求 .net项目规划管理之类的电子教程 或 书籍 怎样用一个程序模拟多客户端socket通信 DEV中lookupedit的问题 如何做对象引用?! 如何将如“#80ff80”的字符串转换成Color类型? 我忍不住要模她。。。。一把 求教实体类的设计问题? 关于windows 窗体!
http://www.microsoft.com/taiwan/msdn/library/2002/Feb-2002/whitepaper/vbtchtopquestionsaboutaspnetdatagridservercontrol.htm#vbtchtopquestionsaboutaspnetdatagridservercontroleditingmultiplerows
{
// 建立 UPDATE 命令字符串
string UpdateCmd = "UPDATE stud SET name = @name, sex = @sex, age = @age," +
"address = @address WHERE stud_id = @stud_id";
SqlCommand MyCommand = new SqlCommand(UpdateCmd, myConnection);
// 设定 UPDATE 命令字串中各个参数的数据类型与长度
MyCommand.Parameters.Add(new SqlParameter("@stud_id", SqlDbType.NVarChar, 10));
MyCommand.Parameters.Add(new SqlParameter("@name", SqlDbType.NVarChar, 10));
MyCommand.Parameters.Add(new SqlParameter("@sex", SqlDbType.NVarChar ,10));
MyCommand.Parameters.Add(new SqlParameter("@age", SqlDbType.Int, 4));
MyCommand.Parameters.Add(new SqlParameter("@address", SqlDbType.NVarChar ,50));
// 取得主索引键之值(此处为学生编号)
MyCommand.Parameters["@stud_id"].Value = MyDataGrid.DataKeys[e.Item.ItemIndex];
string[] Cols = new string[] {"@stud_id", "@name", "@sex", "@age", "@address"};
// 取得 TableCell 物件的数目,也就是每一数据列之储存格的数目(等於 DataGrid 伺服器控制项中数据行的数目)
int NumCols = e.Item.Cells.Count;
// 略过第一栏与第二栏。因为第一栏是删除按钮,第二栏是编辑按钮。
for (int i = 2; i<= NumCols - 1; i++)
{
TextBox CurrentTextBox = (TextBox)e.Item.Cells[i].Controls[0];
string ColValue = CurrentTextBox.Text;
// 检查字段(储存格)的内容是否为 Null 值
if (ColValue == "")
{
//Message.Text = "错误: 每一个字段都必须输入数据不允许 Null 值!";
return;
}
MyCommand.Parameters[Cols[i - 2]].Value = ColValue;
}
try
{
// 呼叫 ExecuteNonQuery() 方法以便针对数据来源执行 UPDATE 命令
MyCommand.ExecuteNonQuery();
// 完成更新作业后使数据行跳出编辑模式
MyDataGrid.EditItemIndex = -1;
}
catch (SqlException Exp)
{
if (Exp.Number == 2627)
Message.InnerHtml = "错误: 具有相同主索引键的数据纪录已经存在。";
else
Message.InnerHtml = "错误: 无法更新数据纪录,请确定各字段是否都已正确输入。";
}
// 关闭连接
MyCommand.Connection.Close();
BindGrid();
}
你只须将datagrid的EditItemIndex设置为你当前选中的行即可进行编辑。编辑完后可采用两种方法保存修改的数据,
一:先修改dataset,然后一次行的导入到数据库,进行修改数据库二:将你datagrid中的字段和数据库中的字段进行直接对应修改