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(); //这个函数是重新绑定的函数,没有错误




}
...全文
76 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()
内容概要:本资源聚焦于配电网在发生故障后的两阶段鲁棒恢复研究,旨在提升电力系统在不确定性条件下的恢复能力与运行可靠性。研究采用两阶段优化方法,第一阶段进行预恢复决策,如网络重构、分布式电源出力调整等,以最小化预期损失;第二阶段则针对实际发生的故障场景实施校正控制,利用鲁棒优化理论应对负荷波动、新能源出力不确定性等因素,确保恢复方案的可行性与强健性。资源提供了完整的Matlab代码实现,复现了相关顶刊研究成果,便于使用者深入理解模型构建、算法求解及仿真分析全过程。; 适合人群:具备电力系统分析、优化理论基础及Matlab编程能力的研究生、科研人员及电力行业工程师。; 使用场景及目标:① 学习并掌握配电网故障恢复的先进优化方法,特别是两阶段鲁棒优化模型的构建与应用;② 复现和验证顶刊论文中的算法,为自身科研工作提供技术参考和代码基础;③ 将所学方法拓展应用于微电网、主动配电网等新型电力系统的可靠性评估与优化调度研究。; 阅读建议:学习者应结合提供的Matlab代码,仔细研读模型的数学公式与求解逻辑,重点关注不确定性建模、两阶段决策变量的设定以及鲁棒对等转换技巧。建议在掌握基础案例后,尝试修改参数或引入新的约束条件进行扩展研究,以深化理解并提升创新能力。

62,269

社区成员

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

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

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

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