之前发了几个贴都没有得到解答,看来只有高手们才能解决了,分不够可以继续加!

gwallan 2004-07-29 09:42:03
我利用SqlCommandBuilder在DataGrid里面进行数据的更新,因为以前都是用SQL语句写的,但这次要求不一样,所以改用SqlCommandBuilder了,代码如下:
public class table : System.Web.UI.Page
{protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.DataGrid DataGrid1;
public DataSet ds = new DataSet();
private void Page_Load(object sender, System.EventArgs e)
{// 在此处放置用户代码以初始化页面
SqlConnection conn=new SqlConnection("server=LY;database=KQXXGLXT;uid=usoft;pwd=");
SqlDataAdapter ap = new SqlDataAdapter("select * from Kqzdzbsjb",conn);
conn.Open();
ap.Fill(ds,"st");
DataGrid1.DataSource=ds.Tables["st"];
DataGrid1.DataBind();
Session["ds"] = ds;
}
private void DataGrid1_SelectedIndexChanged(object sender, System.EventArgs e)
{
}
private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{string a;
int item_count;
item_count=e.Item.Cells.Count;

for(int i=1;i<item_count;i++)
{
a=((TextBox)e.Item.Cells[i+1].Controls[0]).Text;
ds.Tables["st"].Rows[e.Item.DataSetIndex][i-1]=a;
}
SqlConnection conn=new SqlConnection("server=LY;database=KQXXGLXT;uid=usoft;pwd=");
SqlDataAdapter ap = new SqlDataAdapter("select * from Kqzdzbsjb", conn);
SqlCommandBuilder cb=new SqlCommandBuilder(ap);
conn.Open();
ap.UpdateCommand=cb.GetUpdateCommand();

ds=(DataSet)Session["ds"];
ap.Update(ds,"st");
DataGrid1.EditItemIndex=-1;
DataGrid1.DataSource=ds;
DataGrid1.DataBind();
}
表得格式试这样得
——————————————————————————
‖ ‖ ‖ cloum0‖ cloum1 ‖ cloum2 ‖
——————————————————————————
‖ 编辑 ‖ 删除 ‖ abc ‖ abc ‖ abc ‖
——————————————————————————
‖ 编辑 ‖ 删除 ‖ abc ‖ abc ‖ abc ‖
——————————————————————————
可是数据并没有执行更新,请大家看看问题出在哪里
...全文
127 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
RxitRose 2004-07-29
  • 打赏
  • 举报
回复
string a;
int item_count;
item_count=e.Item.Cells.Count;

for(int i=1;i<item_count;i++)
{
a=((TextBox)e.Item.Cells[i+1].Controls[0]).Text;
//这时的ds能得到吗?
ds.Tables["st"].Rows[e.Item.DataSetIndex][i-1]=a;
}
SqlConnection conn=new SqlConnection("server=LY;database=KQXXGLXT;uid=usoft;pwd=");
SqlDataAdapter ap = new SqlDataAdapter("select * from Kqzdzbsjb", conn);
SqlCommandBuilder cb=new SqlCommandBuilder(ap);
conn.Open();
ap.UpdateCommand=cb.GetUpdateCommand();

ds=(DataSet)Session["ds"];
ap.Update(ds,"st");
DataGrid1.EditItemIndex=-1;
DataGrid1.DataSource=ds;
DataGrid1.DataBind();
这里面的ap.UpdateCommand没有设置啊没有设置成更新语句
还有你的DS设成了公有的,我以前也试过了,好象刷新后数据得不到
还有在FORM_LOAD中要加上if(!IsPostBack)你在试试
检查一下你的更新代码
gangganghao 2004-07-29
  • 打赏
  • 举报
回复
private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
不知你这里是怎么写的。。
}

或设断点看是否执行了这里的语句。。
gwallan 2004-07-29
  • 打赏
  • 举报
回复
谢谢楼上的几位,今天受教了。可我把数据绑定的代码写在了if (!IsPostBack)里面,当我点击编辑后,页面上没有任何显示
gangganghao 2004-07-29
  • 打赏
  • 举报
回复
你用断点跟踪一下就会发现,在执行更新之前。已经执行 Page_Load 中的绑定数据了,数据被重新绑定意味着你的改动都丢失了。。

所以需要。。
在Page_Load中使用。。
if (!IsPostBack)
{
执行数据绑定。。
}
可以在 MSDN 中查看 Page.IsPostBack 属性,做一下了解。。。
BillTuan 2004-07-29
  • 打赏
  • 举报
回复
从代码上看显示内容不会有任何变化的!

下面这些代码不知你是想干什么?
SqlDataAdapter ap = new SqlDataAdapter("select * from Kqzdzbsjb", conn);
SqlCommandBuilder cb=new SqlCommandBuilder(ap);
conn.Open();
ap.UpdateCommand=cb.GetUpdateCommand();

没有对数据集做任何更新的嘛,除非数据库的资料别人有改动!是刷新吗?
gwallan 2004-07-29
  • 打赏
  • 举报
回复
是不是数据集ds没有被更新?
bestfuture 2004-07-29
  • 打赏
  • 举报
回复
和上次一样。帮你up
CMIC 2004-07-29
  • 打赏
  • 举报
回复
ds=(DataSet)Session["ds"];//去掉
saucer 2004-07-29
  • 打赏
  • 举报
回复
try

private void Page_Load(object sender, System.EventArgs e)
{// 在此处放置用户代码以初始化页面

if (!IsPostBack)
{
SqlConnection conn=new SqlConnection("server=LY;database=KQXXGLXT;uid=usoft;pwd=");
SqlDataAdapter ap = new SqlDataAdapter("select * from Kqzdzbsjb",conn);
conn.Open();
ap.Fill(ds,"st");
DataGrid1.DataSource=ds.Tables["st"];
DataGrid1.DataBind();
Session["ds"] = ds;
}
else
ds = (DataSet)Session["ds"];
}
leisang 2004-07-29
  • 打赏
  • 举报
回复
update以后要重新载入数据,不然是有缓存的
meixiaofeng 2004-07-29
  • 打赏
  • 举报
回复
up

62,046

社区成员

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

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

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

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