CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

客户提的刁难问题关于datagrid的

楼主zb219(找奔)2006-03-03 08:30:10 在 .NET技术 / C# 提问

要求有一个按纽,按了后datagrid所有的记录的可编辑列变成编辑模式,就是变成textbox,然后再一个按纽全部更新.  
  注意:不是那种用增加个编辑列就可以搞定的,因为要一个按纽就可经编辑所有记录,而编辑列是一条一条的编辑.  
  自己想的解决方案,用绑定列,字符串格式为<input   type="text"   value="{0}">,可是这样的结果是无法获取文本域里面的值,因为datagrid1.items[i].cell[0].text里面只会显示其原先的值,而不是你输入的值.  
  十分郁闷,大家一起想想 问题点数:20、回复次数:43Top

1 楼zb219(找奔)回复于 2006-03-03 08:32:31 得分 0

这个问题很有价值,因为有时客户会因为要逐条编辑而觉麻烦,他们希望一次编辑多条记录.各位同仁一定要看看啊Top

2 楼cansum396(漆黑的夜)回复于 2006-03-03 08:36:05 得分 0

全部用模板列  
  然后在保存的时候循环整个datagrid  
  Top

3 楼califord(远方)回复于 2006-03-03 08:36:07 得分 0

做一个模板列给他,一点全部可编辑,就是用循环,   然后点确定后就是更新数据库,也是循环Top

4 楼lohoo(水喻舟)回复于 2006-03-03 08:43:00 得分 0

做模板列,或者自己继续一下datagrid,自己添加相应的功能.Top

5 楼zb219(找奔)回复于 2006-03-03 08:43:48 得分 0

一点全部可编辑,就是用循环  
  这一点怎么做Top

6 楼newcomer0()回复于 2006-03-03 08:57:22 得分 0

这个也是问题吗?  
   
  用绑定列,字符串格式为<input   type="text"   value="{0}">,可是这样的结果是无法获取文本域里面的值,因为datagrid1.items[i].cell[0].text里面只会显示其原先的值,而不是你输入的值.  
  ---------datagrid1.items[i].cell[0].text本来就是原先的值.  
   
  从你的<input   type="text"   value="{0}">里找答案.  
   
  模板列+循环应该可以解决你的问题.Top

7 楼elivehai(一切皆有可能)回复于 2006-03-03 09:00:45 得分 0

html代码:  
  <HTML>  
  <HEAD>  
  <title>mupgrid</title>  
  <meta   name="GENERATOR"   Content="Microsoft   Visual   Studio   .NET   7.1">  
  <meta   name="CODE_LANGUAGE"   Content="C#">  
  <meta   name="vs_defaultClientScript"   content="JavaScript">  
  <meta   name="vs_targetSchema"   content="http://schemas.microsoft.com/intellisense/ie5">  
  </HEAD>  
  <body   MS_POSITIONING="GridLayout">  
  <form   id="Form1"   method="post"   runat="server">  
  <asp:DataGrid   ID="mygrid"   Runat="server"   AutoGenerateColumns="False"   DataKeyField="Employeeid"  
  Font-Size="9pt"   HeaderStyle-BackColor="darkred"   HeaderStyle-ForeColor="white"   BackColor="white"  
  BorderColor="black">  
  <AlternatingItemStyle   BackColor="#ececec"></AlternatingItemStyle>  
  <Columns>  
  <asp:TemplateColumn>  
  <HeaderTemplate>  
  <asp:CheckBox   ID="chekall"   Runat="server"   onclick="javascript:   return   select_deselectAll(this.checked,this.id);"></asp:CheckBox><font   face="Webdings">a</font>  
  </HeaderTemplate>  
  <ItemTemplate>  
  <input   type="hidden"   id="selectid"   name="selectid"   runat="server"   value='<%#   Container.ItemIndex%>'>  
  <asp:CheckBox   ID="chkbox"   Runat="server"></asp:CheckBox>  
  </ItemTemplate>  
  </asp:TemplateColumn>  
  <asp:BoundColumn   DataField="employeeid"   HeaderText="EmployeeID"></asp:BoundColumn>  
  <asp:TemplateColumn>  
  <HeaderTemplate>  
  FirstName  
  </HeaderTemplate>  
  <ItemTemplate>  
  <asp:Label   ID="lab_firname"   Runat="server"   Text='<%#   DataBinder.Eval(Container.DataItem,"firstname")%>'>  
  </asp:Label>  
  <asp:TextBox   ID="txt_firname"   Runat="server"   Text='<%#   DataBinder.Eval(Container.DataItem,"firstname")%>'   Visible="False">  
  </asp:TextBox>  
  </ItemTemplate>  
  </asp:TemplateColumn>  
  <asp:TemplateColumn   HeaderText="LastName">  
  <ItemTemplate>  
  <asp:Label   ID="lab_lastname"   Runat="server"   Text='<%#   DataBinder.Eval(Container.DataItem,"lastname")%>'>  
  </asp:Label>  
  <asp:TextBox   ID="txt_lastname"   Runat="server"   Text='<%#   DataBinder.Eval(Container.DataItem,"lastname")%>'   Visible="False">  
  </asp:TextBox>  
  </ItemTemplate>  
  </asp:TemplateColumn>  
  </Columns>  
  </asp:DataGrid>  
  <asp:Button   ID="edit"   Runat="server"   Text="Edit"></asp:Button>  
  <asp:Button   ID="update"   Runat="server"   Text="Update"></asp:Button>  
  <asp:Button   ID="del"   Runat="server"   Text="DelItems"></asp:Button>  
  </form>  
  </body>  
  </HTML>Top

8 楼elivehai(一切皆有可能)回复于 2006-03-03 09:01:08 得分 0

c#代码:  
  using   System;  
  using   System.Collections;  
  using   System.ComponentModel;  
  using   System.Data;  
  using   System.Drawing;  
  using   System.Web;  
  using   System.Web.SessionState;  
  using   System.Web.UI;  
  using   System.Web.UI.WebControls;  
  using   System.Web.UI.HtmlControls;  
  using   System.Data.SqlClient;  
  namespace   mydatagrid  
  {  
  ///   <summary>  
  ///   mupgrid   的摘要说明。  
  ///   </summary>  
  public   class   mupgrid   :   System.Web.UI.Page  
  {  
  protected   System.Web.UI.WebControls.Button   edit;  
  protected   System.Web.UI.WebControls.Button   update;  
  protected   System.Web.UI.WebControls.DataGrid   mygrid;  
  protected   System.Web.UI.WebControls.Button   del;  
  private   SqlConnection   conn   =   new   SqlConnection("server=(local);uid=sa;pwd=w;database=northwind;");  
  private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {  
  //   在此处放置用户代码以初始化页面  
  string   jsScript   =   "<script   language=JavaScript>   \n"   +  
  "<!--\n"   +  
  "function   confirmDelete   (frm)   {\n\n"   +  
  "   //   loop   through   all   elements\n"   +  
  "   for   (i=0;   i<frm.length;   i++)   {\n\n"   +  
  "   //   Look   for   our   checkboxes   only\n"   +  
  "   if   (frm.elements[i].name.indexOf   ('chkbox')   !=-1)   {\n"   +  
  "   //   If   any   are   checked   then   confirm   alert,   otherwise   nothing   happens\n"   +  
  "   if(frm.elements[i].checked)   {\n"   +  
  "   return   confirm   ('确认要更新记录吗?')\n"   +  
  "   }\n"   +  
  "   }\n"   +  
  "   }\n"   +  
  "}\n\n\n"   +  
   
  "function   select_deselectAll   (chkVal,   idVal)   {\n"   +  
  "var   frm   =   document.forms[0];\n"   +  
  "//   loop   through   all   elements\n"   +  
  "   for   (i=0;   i<frm.length;   i++)   {\n"   +  
  "   //   //   Look   for   our   Header   Template's   Checkbox\n"   +  
  "   if   (idVal.indexOf   ('chekall')   !=   -1)   {\n"   +  
  "   //   Check   if   main   checkbox   is   checked,   then   select   or   deselect   datagrid   checkboxes   \n"   +  
  "   if(chkVal   ==   true)   {\n"   +  
  "   frm.elements[i].checked   =   true;\n"   +  
  "   }   else   {\n"   +  
  "   frm.elements[i].checked   =   false;\n"   +  
  "   }\n"   +  
  "   //   Work   here   with   the   Item   Template's   multiple   checkboxes\n"   +  
  "   }   else   if   (idVal.indexOf('chkbox')   !=   -1)   {\n"   +  
  "   //   Check   if   any   of   the   checkboxes   are   not   checked,   and   then   uncheck   top   select   all   checkbox\n"   +  
  "   if(frm.elements[i].checked   ==   false)   {\n"   +  
  "   frm.elements[1].checked   =   false;   //   Check   if   any   of   the   checkboxes   are   not   checked,   and   then   uncheck   top   select   all   checkbox\n"   +  
  "   }\n"   +  
  "   }\n"   +  
  "   }\n"   +  
  "}"   +  
  "//-->   \n"   +  
  "</script>";  
  RegisterClientScriptBlock("clientScript",jsScript);  
  WebControl   edit   =   (WebControl)Page.FindControl("update");  
  edit.Attributes.Add("onclick","return   confirmDelete(this.form);");  
   
  if(!IsPostBack)  
  {  
  setbind();  
  }  
  }  
  private   void   setbind()  
  {  
  conn.Open();  
  SqlDataAdapter   sda   =   new   SqlDataAdapter("select   employeeid,firstname,lastname   from   employees",conn);  
  DataSet   ds   =   new   DataSet();  
  sda.Fill(ds);  
  mygrid.DataSource   =   ds.Tables[0].DefaultView;  
  mygrid.DataBind();  
  ds.Clear();  
  sda.Dispose();  
  conn.Close();  
   
  }  
  #region   Web   窗体设计器生成的代码  
  override   protected   void   OnInit(EventArgs   e)  
  {  
  //  
  //   CODEGEN:   该调用是   ASP.NET   Web   窗体设计器所必需的。  
  //  
  InitializeComponent();  
  base.OnInit(e);  
  }  
   
  ///   <summary>  
  ///   设计器支持所需的方法   -   不要使用代码编辑器修改  
  ///   此方法的内容。  
  ///   </summary>  
  private   void   InitializeComponent()  
  {          
  this.edit.Click   +=   new   System.EventHandler(this.edit_Click);  
  this.update.Click   +=   new   System.EventHandler(this.update_Click);  
  this.del.Click   +=   new   System.EventHandler(this.del_Click);  
  this.Load   +=   new   System.EventHandler(this.Page_Load);  
   
  }  
  #endregion  
   
  private   void   edit_Click(object   sender,   System.EventArgs   e)  
  {  
  foreach(DataGridItem   i   in   mygrid.Items)  
  {  
  if(((CheckBox)i.FindControl("chkbox")).Checked   ==   true)  
  {  
  ((TextBox)i.FindControl("txt_firname")).Visible   =   true;  
  ((TextBox)i.FindControl("txt_lastname")).Visible   =   true;  
  ((Label)i.FindControl("lab_firname")).Visible   =   false;  
  ((Label)i.FindControl("lab_lastname")).Visible   =   false;  
  i.BackColor   =   System.Drawing.Color.LightGreen;  
  }  
  }  
  }  
   
  private   void   update_Click(object   sender,   System.EventArgs   e)  
  {  
   
  foreach(DataGridItem   i   in   mygrid.Items)  
  {  
  if(((CheckBox)i.FindControl("chkbox")).Checked   ==   true)  
  {  
  if(((TextBox)i.FindControl("txt_firname")).Text   !=   ((Label)i.FindControl("lab_firname")).Text   ||   ((TextBox)i.FindControl("txt_lastname")).Text   !=   ((Label)i.FindControl("lab_lastname")).Text)  
  {  
  try  
  {  
  conn.Open();  
  string   sql   =   "update   employees   set   firstname='"+(((TextBox)i.FindControl("txt_firname")).Text).ToString()+"',lastname='"+(((TextBox)i.FindControl("txt_lastname")).Text).ToString()+"'   where   employeeid   =   "   +   i.Cells[1].Text.ToString();  
  SqlCommand   cmd   =   new   SqlCommand(sql,conn);  
  cmd.ExecuteNonQuery();  
  }  
  catch(Exception   ex)  
  {  
  Response.Write(ex);  
  }  
  finally  
  {  
  conn.Close();  
   
  }  
  //Response.Write("记录号:"+   this.mygrid.DataKeys[int.Parse(((HtmlInputHidden)i.FindControl("selectid")).Value)]   +   "FirstName:"   +   ((TextBox)i.FindControl("txt_firname")).Text   +   "LastName:"   +   ((TextBox)i.FindControl("txt_lastname")).Text   +   "<br>");  
   
  }  
  ((TextBox)i.FindControl("txt_firname")).Visible   =   false;  
  ((TextBox)i.FindControl("txt_lastname")).Visible   =   false;  
  ((Label)i.FindControl("lab_firname")).Visible   =   true;  
  ((Label)i.FindControl("lab_lastname")).Visible   =   true;  
  ((CheckBox)i.FindControl("chkbox")).Checked   =   false;  
  }  
  }  
  setbind();  
  }  
   
  private   void   del_Click(object   sender,   System.EventArgs   e)  
  {  
  string   ids   =   "";  
  bool   flag   =   false;  
  foreach(DataGridItem   i   in   mygrid.Items)  
  {  
  if(((CheckBox)i.FindControl("chkbox")).Checked)  
  {  
  flag   =   true;  
  ids   +=   i.Cells[1].Text.ToString()   +   ",";  
  }  
  }  
  if(flag   ==   true)  
  {  
  string   sql   =   "delete   from   employees   where   employeeid   in("   +   ids.Substring(0,ids.LastIndexOf(","))   +")";  
  try  
  {  
  conn.Open();  
  SqlCommand   cmd   =   new   SqlCommand(sql,conn);  
  cmd.ExecuteNonQuery();  
   
  }  
  catch(Exception   ex)  
  {  
  Response.Write(ex);  
  }  
  finally  
  {  
  conn.Close();  
  setbind();  
  }  
   
  }  
  }  
  }  
  }Top

9 楼elivehai(一切皆有可能)回复于 2006-03-03 09:01:59 得分 20

上面的我实验过了,完全可以的,就是麻烦了点哦。呵呵。Top

10 楼LV_Q(AES)回复于 2006-03-03 09:03:02 得分 0

好问题Top

11 楼zb219(找奔)回复于 2006-03-03 09:08:54 得分 0

因为我只能写<input   type="text"   value="{0}">  
  我总不能写<input   type="text"   value="{0}"   runat=server>  
  或  
  <input   type="text"   value="{0}"   name="{0}">  
  吧  
  Top

12 楼zb219(找奔)回复于 2006-03-03 09:14:47 得分 0

关键是如果用模板列,那在页面加载的时候也是编辑模式,我要在页面加载的时候是非编辑模式,按了按钮后变为编辑模式Top

13 楼crazy2005(剣心)回复于 2006-03-03 09:28:18 得分 0

为什么一定要用客户端的?Top

14 楼zb219(找奔)回复于 2006-03-03 09:34:33 得分 0

知道了,elivehai(wzh)提出的方案是在模板例里放了两个控件,一个是label,一个是textbox,后面默认为不显示.Top

15 楼crazy2005(剣心)回复于 2006-03-03 09:53:49 得分 0

你也可以用样式表来控制textbox的表示形式!那样只用textbox也可以实现你的目的Top

16 楼zzfloat(方舟)回复于 2006-03-03 10:43:50 得分 0

自己想的解决方案,用绑定列,字符串格式为<input   type="text"   value="{0}">,可是这样的结果是无法获取文本域里面的值,因为datagrid1.items[i].cell[0].text里面只会显示其原先的值,而不是你输入的值.  
   
  其实用Request是可以取到值的  
  <input   type="text"   value="{0}">   改成  
  <input   type="text"   name="myInput"   value="{0}">  
  string   values=Request["myInput"];  
  string[]   inputs=values.Split(',');  
  第i行的输入值对应inputs[i];Top

17 楼zb219(找奔)回复于 2006-03-03 11:36:25 得分 0

crazy2005(剣心)的方法也不错  
  zzfloat(方舟)    
  <input   type="text"   value="{0}">   改成  
  <input   type="text"   name="myInput"   value="{0}">  
  string   values=Request["myInput"];  
  string[]   inputs=values.Split(',');  
  这种方法其实是行不通的  
  采用了elivehai(wzh)   的方法,  
  现在给分  
  不过大家可以想想有没有更好的方法Top

18 楼zb219(找奔)回复于 2006-03-03 11:39:06 得分 0

算了,为了完美,还是等等,明天结帐Top

19 楼daishengs(横舟摆渡)回复于 2006-03-03 11:50:46 得分 0

如果你想即简单又美观就到网上下个第三方的DataGrid控件吧,它是支持整表编辑模式的,还可能拖拉列。Top

20 楼idda(碗掉了,头大个疤)回复于 2006-03-03 11:55:43 得分 0

用模板列,给个command标志,在itemcomand事件里面判断,循环代码量不大Top

21 楼diablo1003(小叶)回复于 2006-03-03 12:10:13 得分 0

用循环判断咯,使用C1的Grid,这个还是非常的不错的。Top

22 楼zb219(找奔)回复于 2006-03-03 15:30:29 得分 0

用模板列,给个command标志,在itemcomand事件里面判断,循环代码量不大  
  能否详尽Top

23 楼jun1111(狼性亦飄零...)回复于 2006-03-03 15:51:48 得分 0

用第三方控件是最好的。  
   
   
   
  Top

24 楼zb219(找奔)回复于 2006-03-03 16:06:31 得分 0

那介绍一下第三方控件Top

25 楼superhasty(鸟儿自空中飞过)回复于 2006-03-03 16:21:15 得分 0

看一下.Top

26 楼cattleknife(解牛刀)回复于 2006-03-04 04:55:12 得分 0

不用这么复杂吧,做个隐藏列,再做两个按钮,按编辑呢,把隐藏列打开。  
  如果要编辑的列太多,索性做两个TABLE,一个管显示,一个管编辑,一按更新就切换。Top

27 楼hjh1982(能说不是错)回复于 2006-03-04 08:22:00 得分 0

呵呵,关注!Top

28 楼kevin521(蓝电飞雪)回复于 2006-03-04 08:28:38 得分 0

收藏。Top

29 楼jyk(今天由我来写的代码,明天就让程序自己完成!喜欢编程。和气生财。共同提高。共同进步!)回复于 2006-03-04 09:01:12 得分 0

 
  ===================   注意了   最佳解决方案!!   =============================  
   
   
  做两个DataGrid   一个浏览用,一个编辑用。  
   
  浏览用的正常的方式,编辑用的(加模版列)把TextBox“上移一行”,就是把Label换成TextBox,不知道我说明白了没有。  
   
  单击按钮,切换两个DataGrid的显示。  
  Top

30 楼accpbenson(叮噹大雄☆☆☆☆☆)回复于 2006-03-04 09:06:51 得分 0

c#代码:  
  using   System;  
  using   System.Collections;  
  using   System.ComponentModel;  
  using   System.Data;  
  using   System.Drawing;  
  using   System.Web;  
  using   System.Web.SessionState;  
  using   System.Web.UI;  
  using   System.Web.UI.WebControls;  
  using   System.Web.UI.HtmlControls;  
  using   System.Data.SqlClient;  
  namespace   mydatagrid  
  {  
  ///   <summary>  
  ///   mupgrid   的摘要说明。  
  ///   </summary>  
  public   class   mupgrid   :   System.Web.UI.Page  
  {  
  protected   System.Web.UI.WebControls.Button   edit;  
  protected   System.Web.UI.WebControls.Button   update;  
  protected   System.Web.UI.WebControls.DataGrid   mygrid;  
  protected   System.Web.UI.WebControls.Button   del;  
  private   SqlConnection   conn   =   new   SqlConnection("server=(local);uid=sa;pwd=w;database=northwind;");  
  private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {  
  //   在此处放置用户代码以初始化页面  
  string   jsScript   =   "<script   language=JavaScript>   \n"   +  
  "<!--\n"   +  
  "function   confirmDelete   (frm)   {\n\n"   +  
  "   //   loop   through   all   elements\n"   +  
  "   for   (i=0;   i<frm.length;   i++)   {\n\n"   +  
  "   //   Look   for   our   checkboxes   only\n"   +  
  "   if   (frm.elements[i].name.indexOf   ('chkbox')   !=-1)   {\n"   +  
  "   //   If   any   are   checked   then   confirm   alert,   otherwise   nothing   happens\n"   +  
  "   if(frm.elements[i].checked)   {\n"   +  
  "   return   confirm   ('确认要更新记录吗?')\n"   +  
  "   }\n"   +  
  "   }\n"   +  
  "   }\n"   +  
  "}\n\n\n"   +  
   
  "function   select_deselectAll   (chkVal,   idVal)   {\n"   +  
  "var   frm   =   document.forms[0];\n"   +  
  "//   loop   through   all   elements\n"   +  
  "   for   (i=0;   i<frm.length;   i++)   {\n"   +  
  "   //   //   Look   for   our   Header   Template's   Checkbox\n"   +  
  "   if   (idVal.indexOf   ('chekall')   !=   -1)   {\n"   +  
  "   //   Check   if   main   checkbox   is   checked,   then   select   or   deselect   datagrid   checkboxes   \n"   +  
  "   if(chkVal   ==   true)   {\n"   +  
  "   frm.elements[i].checked   =   true;\n"   +  
  "   }   else   {\n"   +  
  "   frm.elements[i].checked   =   false;\n"   +  
  "   }\n"   +  
  "   //   Work   here   with   the   Item   Template's   multiple   checkboxes\n"   +  
  "   }   else   if   (idVal.indexOf('chkbox')   !=   -1)   {\n"   +  
  "   //   Check   if   any   of   the   checkboxes   are   not   checked,   and   then   uncheck   top   select   all   checkbox\n"   +  
  "   if(frm.elements[i].checked   ==   false)   {\n"   +  
  "   frm.elements[1].checked   =   false;   //   Check   if   any   of   the   checkboxes   are   not   checked,   and   then   uncheck   top   select   all   checkbox\n"   +  
  "   }\n"   +  
  "   }\n"   +  
  "   }\n"   +  
  "}"   +  
  "//-->   \n"   +  
  "</script>";  
  RegisterClientScriptBlock("clientScript",jsScript);  
  WebControl   edit   =   (WebControl)Page.FindControl("update");  
  edit.Attributes.Add("onclick","return   confirmDelete(this.form);");  
   
  if(!IsPostBack)  
  {  
  setbind();  
  }  
  }  
  private   void   setbind()  
  {  
  conn.Open();  
  SqlDataAdapter   sda   =   new   SqlDataAdapter("select   employeeid,firstname,lastname   from   employees",conn);  
  DataSet   ds   =   new   DataSet();  
  sda.Fill(ds);  
  mygrid.DataSource   =   ds.Tables[0].DefaultView;  
  mygrid.DataBind();  
  ds.Clear();  
  sda.Dispose();  
  conn.Close();  
   
  }  
  #region   Web   窗体设计器生成的代码  
  override   protected   void   OnInit(EventArgs   e)  
  {  
  //  
  //   CODEGEN:   该调用是   ASP.NET   Web   窗体设计器所必需的。  
  //  
  InitializeComponent();  
  base.OnInit(e);  
  }  
   
  ///   <summary>  
  ///   设计器支持所需的方法   -   不要使用代码编辑器修改  
  ///   此方法的内容。  
  ///   </summary>  
  private   void   InitializeComponent()  
  {          
  this.edit.Click   +=   new   System.EventHandler(this.edit_Click);  
  this.update.Click   +=   new   System.EventHandler(this.update_Click);  
  this.del.Click   +=   new   System.EventHandler(this.del_Click);  
  this.Load   +=   new   System.EventHandler(this.Page_Load);  
   
  }  
  #endregion  
   
  private   void   edit_Click(object   sender,   System.EventArgs   e)  
  {  
  foreach(DataGridItem   i   in   mygrid.Items)  
  {  
  if(((CheckBox)i.FindControl("chkbox")).Checked   ==   true)  
  {  
  ((TextBox)i.FindControl("txt_firname")).Visible   =   true;  
  ((TextBox)i.FindControl("txt_lastname")).Visible   =   true;  
  ((Label)i.FindControl("lab_firname")).Visible   =   false;  
  ((Label)i.FindControl("lab_lastname")).Visible   =   false;  
  i.BackColor   =   System.Drawing.Color.LightGreen;  
  }  
  }  
  }  
   
  private   void   update_Click(object   sender,   System.EventArgs   e)  
  {  
   
  foreach(DataGridItem   i   in   mygrid.Items)  
  {  
  if(((CheckBox)i.FindControl("chkbox")).Checked   ==   true)  
  {  
  if(((TextBox)i.FindControl("txt_firname")).Text   !=   ((Label)i.FindControl("lab_firname")).Text   ||   ((TextBox)i.FindControl("txt_lastname")).Text   !=   ((Label)i.FindControl("lab_lastname")).Text)  
  {  
  try  
  {  
  conn.Open();  
  string   sql   =   "update   employees   set   firstname='"+(((TextBox)i.FindControl("txt_firname")).Text).ToString()+"',lastname='"+(((TextBox)i.FindControl("txt_lastname")).Text).ToString()+"'   where   employeeid   =   "   +   i.Cells[1].Text.ToString();  
  SqlCommand   cmd   =   new   SqlCommand(sql,conn);  
  cmd.ExecuteNonQuery();  
  }  
  catch(Exception   ex)  
  {  
  Response.Write(ex);  
  }  
  finally  
  {  
  conn.Close();  
   
  }  
  //Response.Write("记录号:"+   this.mygrid.DataKeys[int.Parse(((HtmlInputHidden)i.FindControl("selectid")).Value)]   +   "FirstName:"   +   ((TextBox)i.FindControl("txt_firname")).Text   +   "LastName:"   +   ((TextBox)i.FindControl("txt_lastname")).Text   +   "<br>");  
   
  }  
  ((TextBox)i.FindControl("txt_firname")).Visible   =   false;  
  ((TextBox)i.FindControl("txt_lastname")).Visible   =   false;  
  ((Label)i.FindControl("lab_firname")).Visible   =   true;  
  ((Label)i.FindControl("lab_lastname")).Visible   =   true;  
  ((CheckBox)i.FindControl("chkbox")).Checked   =   false;  
  }  
  }  
  setbind();  
  }  
   
  private   void   del_Click(object   sender,   System.EventArgs   e)  
  {  
  string   ids   =   "";  
  bool   flag   =   false;  
  foreach(DataGridItem   i   in   mygrid.Items)  
  {  
  if(((CheckBox)i.FindControl("chkbox")).Checked)  
  {  
  flag   =   true;  
  ids   +=   i.Cells[1].Text.ToString()   +   ",";  
  }  
  }  
  if(flag   ==   true)  
  {  
  string   sql   =   "delete   from   employees   where   employeeid   in("   +   ids.Substring(0,ids.LastIndexOf(","))   +")";  
  try  
  {  
  conn.Open();  
  SqlCommand   cmd   =   new   SqlCommand(sql,conn);  
  cmd.ExecuteNonQuery();  
   
  }  
  catch(Exception   ex)  
  {  
  Response.Write(ex);  
  }  
  finally  
  {  
  conn.Close();  
  setbind();  
  }  
   
  }  
  }  
  }  
  }  
  Top

31 楼gaohaidong(高海东)回复于 2006-03-04 10:20:59 得分 0

这个是有点麻烦Top

32 楼tudou614(魔蟹座的SATAN)回复于 2006-03-04 10:21:15 得分 0

MKTop

33 楼jeffy2100(永远的我)回复于 2006-03-04 10:48:52 得分 0

jyk(喜欢编程。和气生财。共同提高。共同进步)的方案:  
  做两个DataGrid   一个浏览用,一个编辑用。  
   
  浏览用的正常的方式,编辑用的(加模版列)把TextBox“上移一行”,就是把Label换成TextBox,不知道我说明白了没有。  
   
  单击按钮,切换两个DataGrid的显示。  
   
  这样也行吧。不过好像复杂点,呵呵Top

34 楼boy_north(北方的豹子)回复于 2006-03-04 11:17:50 得分 0

还是有高人的!  
  强!Top

35 楼epbon(没有)回复于 2006-03-04 18:07:21 得分 0

我们公司是结合ajax,.net重新开发了一个平台,不过投入较大Top

36 楼sdwf(学习.NET中)回复于 2006-03-04 21:39:39 得分 0

http://blogs.msdn.com/mattdotson/archive/2005/11/09/491096.aspxTop

37 楼dsclub(任搏软)回复于 2006-03-04 23:12:49 得分 0

值得学习Top

38 楼feibinger(冰山之封)回复于 2006-03-04 23:57:01 得分 0

收藏Top

39 楼sunick1984(阳光)回复于 2006-03-05 03:09:17 得分 0

偶是菜鸟没看懂  
  Top

40 楼wanhuibing(顽石)回复于 2006-03-05 09:12:21 得分 0

收藏。Top

41 楼WeekZero(∮小气的鬼∮)回复于 2006-03-05 09:49:51 得分 0

使用循环也有问题,循环更新时不可以一条一条的来  
   
  得使用事务来处理,要么在sql语句中使用事务,要么在程序中使用事务Top

42 楼zb219(找奔)回复于 2006-03-08 13:31:44 得分 0

编辑用的(加模版列)把TextBox“上移一行”,就是把Label换成TextBox,不知道我说明白了没有。  
  没看明白  
  Top

43 楼lizzy63(燕子)回复于 2006-03-09 10:34:54 得分 0

在winfom中怎么用啊,Top

相关问题

  • datagrid 客户端拖动行的问题
  • 讨论DataGrid客户端排序
  • 怎么让DataGrid在客户端排序?
  • 在客户端修改DataGrid单元格中的值,为何提交后还是原来的?
  • 提取客户端数据
  • 如何在客户端向DATAGRID或DATALIST添加新行?
  • DataGrid能不能进行客户端的操作啊?
  • 如何在客户端获取datagrid内的数据?
  • 求救:客户端 画图 提交... ...
  • 急:客户端提交问题

关键词

  • asp.net
  • c#
  • visible

得分解答快速导航

  • 帖主:zb219
  • elivehai

相关链接

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

广告也精彩

反馈

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