CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

麻烦看看这段DataGrid删除代码哪有问题?(很奇怪的问题)

楼主longwelkin(birdman)2003-12-03 18:59:53 在 .NET技术 / ASP.NET 提问

private   void   dgWZInfoByCode_DeleteCommand(object   source,   System.Web.UI.WebControls.DataGridCommandEventArgs   e)    
              {    
                    int   errCode;    
                    string   errStr;    
                    string   todelwzid   =   this.dgWZInfoByCode.DataKeys[e.Item.ItemIndex].ToString().Trim();    
  //如果换成这行则会出错             string   todelwzid   =   this.dgWZInfoByCode.SelectedItem.Cells[0].Text.Trim();    
   
                    this.Cwzbase.DeleteMaterial(todelwzid);    
                    this.Cwzbase.GetLastError(out   errCode,out   errStr);    
                    if   (errCode   !=   0)    
                    {    
                          this.Label1.Text   =   errStr   ;    
                    }    
                    else    
                    {    
                          this.FillWZInfoByCode();    
                          this.Label1.Text   =   "成功删除物资信息!";    
                    }    
              }    
   
   
  错误描述:    
   
  如果datagrid只有一页,不会出错,如果有两页以上,则删除第一页的记录不会出错,如果是删除第二页以后的,则会删除第一页的相应行记录,比如我删第三页的第一行记录,则实际上是删除了第一页的第一行记录,我进行跟踪,发现取的id值确实是第一页第一行的id,也就是说我的this.Cwzbase.DeleteMaterial(todelwzid);方法没有错误,只是取id的时候没有取得选择的行id    
   
  附我的datagrid代码:    
   
                    <asp:datagrid   id="dgWZInfoByCode"   runat="server"   Width="98%"   DataKeyField="WZID"   EnableViewState="False"   BorderColor="Black"   Font-Name="宋体"   Font-Size="9pt"   HeaderStyle-BackColor="#aaaadd"   CellPadding="3"   BackColor="White"   PageSize="2"   AllowPaging="True"   AutoGenerateColumns="False"   Font-Names="宋体"   AlternatingItemStyle-BackColor="#eeeeee"   PagerStyle-Mode="NumericPages">    
                          <AlternatingItemStyle   BackColor="#EEEEEE"></AlternatingItemStyle>    
                          <HeaderStyle   BackColor="#AAAADD"></HeaderStyle>    
                          <Columns>    
                                <asp:BoundColumn   DataField="WZID"   HeaderText="物资代码"></asp:BoundColumn>    
                                <asp:BoundColumn   DataField="PYCODE"   HeaderText="拼音码"></asp:BoundColumn>    
                                <asp:BoundColumn   DataField="CSTMCODE"   HeaderText="查询码"></asp:BoundColumn>    
                                <asp:BoundColumn   DataField="WZNAME"   HeaderText="物资名称"></asp:BoundColumn>    
                                <asp:BoundColumn   DataField="WZMODEL"   HeaderText="规格型号"></asp:BoundColumn>    
                                <asp:BoundColumn   DataField="WZUNIT"   HeaderText="计量单位"></asp:BoundColumn>    
                                <asp:BoundColumn   DataField="WZHIGHLIMIT"   HeaderText="库存上限"></asp:BoundColumn>    
                                <asp:BoundColumn   DataField="WZLOWLIMIT"   HeaderText="库存下限"></asp:BoundColumn>    
                                <asp:BoundColumn   DataField="NOTES"   HeaderText="备注"></asp:BoundColumn>    
                                <asp:HyperLinkColumn   DataNavigateUrlField="WZID"   DataNavigateUrlFormatString="JavaScript:window.showModalDialog('wzdtInfo.aspx?WZID={0}',window,'dialogWidth:540px;dialogheight:460px;center:1;scroll:1;help:0;status:0;resizable:no;');"   DataTextField="WZID"   DataTextFormatString="修改"></asp:HyperLinkColumn>    
                                <asp:ButtonColumn   Text="<div   id="delete"   onclick="javascript:return   confirm('你确定要删除这条物资记录吗?')">删除</div>   "   CommandName="Delete"></asp:ButtonColumn>    
                          </Columns>    
                          <PagerStyle   Mode="NumericPages"></PagerStyle>    
                    </asp:datagrid> 问题点数:50、回复次数:6Top

1 楼superch0054(竹君子)回复于 2003-12-03 19:12:12 得分 0

取得当前的页数n,  
  删的时候取  
  n*d+i(d-每页项数)  
  i--当前页第几项Top

2 楼sjc0(流浪者)回复于 2003-12-03 19:13:19 得分 20

我遇到的问题不知道跟你的有相像之处没有  
  我的DataGrid中如果有两页,并且第二页只有一行,并且删除这一行试出错!  
  我的解决方法:在邦定代码前加  
  if(DataGrid1.CurrentPageIndex   >   0)  
  {  
  if   (   DataGrid1.CurrentPageIndex   ==   DataGrid1.PageCount   -   1   &&   DataGrid1.Items.Count   %   DataGrid1.PageSize   ==   1)  
  {  
  DataGrid1.CurrentPageIndex   =   DataGrid1.CurrentPageIndex   -   1;  
  }  
  }  
  DataGrid1.DataSource   =   ddd.GetConInfo(0,1);    
  DataGrid1.DataBind();Top

3 楼wuyanfeng(耍库)回复于 2003-12-03 19:31:22 得分 30

取得当前的页数n,  
  删的时候取  
  n*d+i(d-每页项数)  
  i--当前页第几项  
  同时也要用这个方法:  
  public   void   DelRowFormDataGrid(DataGrid   dg)  
  {  
  if((dg.PageCount   *   dg.PageSize   +   dg.Items.Count   -   1)   %   dg.PageSize   ==   0   &&   dg.CurrentPageIndex   >0)//DATAGRID中的总页数乘以分页数加上当前页的总项数减一,再与DATAGRID的分页数求摸。如果等于零表示DATAGRID中的总页数已经减一,如果DATAGRID中当前索引大于零(DATAGRID中的当前索引是丛零开始),则DATAGRID的当前页需要用总页数减一。  
  {  
  dg.CurrentPageIndex   =dg.PageCount   -2;  
  }  
  dg.EditItemIndex   =   -1;//不重新设定编辑项会出现难以发现的错误。  
  }Top

4 楼wuyanfeng(耍库)回复于 2003-12-03 19:38:15 得分 0

如果数据源存在Session["数据源"]中,那么直接用((DataTable)Session["数据源"]).Rows[e.Item.ItemIndex]["id"].ToString();Top

5 楼longwelkin(birdman)回复于 2003-12-04 11:36:47 得分 0

不行啊!  
  我怎么也想不明白,怎么会出现这种情况?Top

6 楼longwelkin(birdman)回复于 2003-12-04 12:05:14 得分 0

我把EnableViewState属性改成true就可以了  
  请问EnableViewState是用来干什么的?Top

相关问题

  • 求datagrid数据删除和删除确认的代码
  • 新手求助!datagrid的删除要点两下才能删除!代码如下:
  • 求一个在winform下datagrid中删除选中行的代码!
  • 求Datagrid 的删除前确认的C#代码
  • DataGrid中的删除按钮代码如何写??
  • 一个页面的代码用来删除记录的,执行到Execute()出错,麻烦那位帮我看看……
  • 麻烦给看一下这段代码是怎么用的?删除自己的程序.
  • 急!怎末用代码控制DataGrid控件的添加删除和编辑呀!!
  • 我需要完整的修改、删除datagrid中的数据的代码。
  • 高分求C#写的DataGrid有分页的,多选删除代码

关键词

  • datagrid
  • 代码
  • 数据
  • 删除
  • todelwzid
  • 页数
  • dg
  • cwzbase
  • dgwzinfobycode
  • 项数

得分解答快速导航

  • 帖主:longwelkin
  • sjc0
  • wuyanfeng

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo