DataGrid绑定问题的经典提问(爆笑)

rferen2003 2003-12-06 03:35:08
我的datagrid是这样的格式

编号 时间 部门编号 质量名称 质量完成值
编辑 1 2003-3-3 101 零件生产数 10000
编辑 1 2003-3-3 102 废品产生数 5

这个datagrid的名称为MyDataGrid
我用了下面的语句来处理更新代码,结果运行正常,没有出错的提示,但是就是数据没有更新,不知道为什么,请高手指教:

void MyDataGrid_Update(Object sender, DataGridCommandEventArgs e)
{

String updateCmd = "UPDATE KEEDEE_HR SET STR_TIME = @STR_TIME, DEPT_CODE = @DEPT_CODE , QUANLITY_NAME = @QUANLITY_NAME , QUANLITY_VALUE = @QUANLITY_VALUE where id=@id ";

SqlCommand myCommand = new SqlCommand(updateCmd, myConnection);

myCommand.Parameters.Add(new SqlParameter("@STR_TIME", SqlDbType.DateTime, 8));
myCommand.Parameters.Add(new SqlParameter("@DEPT_CODE", SqlDbType.NVarChar, 40));
myCommand.Parameters.Add(new SqlParameter("@QUANLITY_NAME", SqlDbType.NVarChar, 50));
myCommand.Parameters.Add(new SqlParameter("@QUANLITY_VALUE", SqlDbType.Float, 8));
myCommand.Parameters.Add(new SqlParameter("@id", SqlDbType.Int, 4));

myCommand.Parameters["@Id"].Value = ((System.Web.UI.WebControls.TextBox)e.Item.Cells[1].Controls[0]).Text;


String[] cols = {"@STR_TIME","@DEPT_CODE","@QUANLITY_NAME","@QUANLITY_VALUE","@id"};
String colvalue;
int numCols = e.Item.Cells.Count;
for (int i=2; i<numCols; i++) //跳过第一列
{
colvalue =((System.Web.UI.WebControls.TextBox)e.Item.Cells[i].Controls[0]).Text;

myCommand.Parameters[cols[i-2]].Value = colvalue;
}



myCommand.Connection.Open();

try
{
myCommand.ExecuteNonQuery();
}
catch (SqlException exc)
{

if (exc.Number == 2627)
Message.InnerHtml = "错误:已存在具有相同主键的记录";
else
Message.InnerHtml = "错误:未能更新记录,请确保正确填写了字段";
Message.Style["color"] = "red";
}

myCommand.Connection.Close();

this.bind(); //这个函数是重新绑定的函数,没有错误




}
...全文
38 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
???2008 2003-12-08
  • 打赏
  • 举报
回复
暴笑?
BrownTerran 2003-12-08
  • 打赏
  • 举报
回复
IsPostBack属性!相信我,我碰到过这样的问题多了
都是没有将DataBind()函数放在
if Not(IsPostBack) then
****
end if
块内导致的错误。
rferen2003 2003-12-08
  • 打赏
  • 举报
回复
问题基本届定了,是更新语句的问题:
String updateCmd = "UPDATE KEEDEE_HR SET STR_TIME = @STR_TIME, DEPT_CODE = @DEPT_CODE , QUANLITY_NAME = @QUANLITY_NAME , QUANLITY_VALUE = @QUANLITY_VALUE where id=@id ";

在我加了参数以后进行了一系列的处理以后为什么仍然是如下的形式:
UPDATE KEEDEE_HR SET STR_TIME = @STR_TIME, DEPT_CODE = @DEPT_CODE , QUANLITY_NAME = @QUANLITY_NAME , QUANLITY_VALUE = @QUANLITY_VALUE where id=@id
我用手工的方法写了update语句就好用了,
到底我的这种算法出了什么问题?

pcitlyy1979 2003-12-08
  • 打赏
  • 举报
回复
你把更新字符串信息显示出来,然后放入查询分析器中让它直接更新数据库表中的内容
,如果同样不能更新,看看Command对象中的数据类型是否和数据库中类型,长度一致
Jouzen 2003-12-08
  • 打赏
  • 举报
回复
在事件处理中没有做重新绑定吧
rferen2003 2003-12-08
  • 打赏
  • 举报
回复
我将原来的程序做了改动:把

try
{
myCommand.ExecuteNonQuery();
}

改为

try
{
Response.Write("<script language='javascript'>alert('here');</script>");
myCommand.ExecuteNonQuery();
}

就是为了测试程序的执行
当我第一次点击“更新”按钮的时候,弹出了对话框"here",当我第二次点击的时候就没有对话框弹出,第三次就弹出了,第4次就没有,总之就是单数的时候有,双数的时候没有。但是有一个共同的特点就是对数据做的改变都没有被写进数据库。
我又把程序改成

Response.Write("<script language='javascript'>alert('here');</script>");
try
{
myCommand.ExecuteNonQuery();
}

结果还是一样。
天哪,我到底做了什么孽,怎么会出现这种情况?

76wzc 2003-12-08
  • 打赏
  • 举报
回复
希望多点诚信,起码应该解释下!
lvzm 2003-12-06
  • 打赏
  • 举报
回复
楼上说的是一种很好的技术if(!Page.IsPostBack)
{
this.bind();
}
但他不能解决你的问题,而是为了节省服务器资源。绑定与更新数据库完全是不同的,绑定以后只不过把他放在一个datatable集合里,你上面的没错,很可能你没有触动这个MyDataGrid_Update(Object sender, DataGridCommandEventArgs e)
事件。
rferen2003 2003-12-06
  • 打赏
  • 举报
回复
不是阿,
DataGrid里面修改的东西根本就没有被保存进数据库,
楼上几位说的都是在更新完了以后是否重新绑定。
cxwsoftware 2003-12-06
  • 打赏
  • 举报
回复
同意jhonsn(晓晨) ( )
rferen2003 2003-12-06
  • 打赏
  • 举报
回复
if(!Page.IsPostBack)
{
this.bind();
}
------------------------
这个方法好像并不管用,
既然执行了下列的语句:
myCommand.ExecuteNonQuery();
就应该将修改保存进去,
但是实际情况是修改并没有被保存进数据库,而且没有任何错误的提示,不知道是哪里出了问题?
请高手指教。

inlove0901 2003-12-06
  • 打赏
  • 举报
回复
哪里好笑了??
没看出来啊
jhonsn 2003-12-06
  • 打赏
  • 举报
回复
if(!Page.IsPostBack)
{
this.bind();
}
buaawjh 2003-12-06
  • 打赏
  • 举报
回复
if not ispostback then
bindgrid()

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧