GridView操作一条记录的N种方式

结合GridView自身的特点,总结出操作(可以是删除、导入、更新等)单条记录的N种方式

首先,前台文件内容如下:

None.gif < asp:GridView  ID ="GVList"  runat ="server"  ShowFooter ="true"  AutoGenerateColumns ="False"
None.gif                BorderStyle
="Solid"  BorderColor ="#ffffff"  GridLines ="Horizontal"  CellSpacing ="1"
None.gif                Width
="100%"  HorizontalAlign ="NotSet"  BorderWidth ="0px"  EnableViewState ="true"
None.gif                DataKeyNames
="PKID" >
None.gif                
< Columns >
None.gif                    
< asp:TemplateField >
None.gif                        
< HeaderStyle  Width ="60px"  BackColor ="#1C5E55"  ForeColor ="White"   />
None.gif                        
< HeaderTemplate >
None.gif                           
</ HeaderTemplate >
None.gif                        
< ItemTemplate >
None.gif                            
< asp:Label  ID ="PKID"  Text ='<%#  DataBinder.Eval(Container.DataItem,"PKID")% > ' runat="server"
None.gif                                Visible="true"  Width="10"/>
None.gif                                 
< asp:Label  ID ="FilePath"  Text ='<%#  DataBinder.Eval(Container.DataItem,"FilePath")% > ' runat="server"
None.gif                                Visible="true"  Width="700"/>
None.gif                        
</ ItemTemplate >
None.gif                    
</ asp:TemplateField >
None.gif                   
None.gif                    
< asp:TemplateField >
None.gif                        
< HeaderStyle  Width ="60px"   />
None.gif                        
< HeaderTemplate >
None.gif                            操作
</ HeaderTemplate >
None.gif                        
< ItemTemplate >
None.gif                            
< asp:LinkButton  ID ="cmdImport"  ForeColor ="Red"  Text ="操作"  CssClass ="ElementNavigation"
None.gif                                CausesValidation
="false"  runat ="server"  CommandName ="Import"  OnClientClick ="javascript:return confirm('确定操作已选择的数据吗?')"   />
None.gif                        
</ ItemTemplate >
None.gif                    
</ asp:TemplateField >< asp:CommandField  DeleteText ="操作"  ShowDeleteButton ="true"  ButtonType ="Button"  HeaderStyle-Width ="40px"   />
None.gif
None.gif                                   
</ Columns >
None.gif            
</ asp:GridView >

 其次:在后台Page_Load()事件是注册以下事件

ContractedBlock.gif ExpandedBlockStart.gif Code
None.gif if (GVList != null)
ExpandedBlockStart.gifContractedBlock.gif            
dot.gif{
InBlock.gif                GVList.RowDataBound 
+= new GridViewRowEventHandler(GVList_RowDataBound);
InBlock.gif                GVList.RowCommand 
+= new GridViewCommandEventHandler(GVList_RowCommand);
InBlock.gif                GVList.RowDeleting 
+= new GridViewDeleteEventHandler(GVList_RowDeleting);
ExpandedBlockEnd.gif            }

同时添加以下事件

None.gif   private   void  GVList_RowUpdating( object  sender, GridViewUpdateEventArgs e)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif { }

现分别说明各事件的作用如下:

 第一种操作方式,用GVList_RowDeleting事件

ContractedBlock.gif ExpandedBlockStart.gif Code
None.gif  protected void GVList_RowDataBound(object sender, GridViewRowEventArgs e)
ExpandedBlockStart.gifContractedBlock.gif          
dot.gif{
InBlock.gif              
if (e.Row.RowType == DataControlRowType.DataRow)
ExpandedSubBlockStart.gifContractedSubBlock.gif              
dot.gif{
InBlock.gif                  LinkButton lbUpdate 
= (LinkButton)e.Row.FindControl("cmdImport");
ExpandedSubBlockStart.gifContractedSubBlock.gif                  
if (lbUpdate != nulldot.gif{ lbUpdate.CommandArgument = SQLParser.StringParse(DataBinder.Eval(e.Row.DataItem, "FilePath")); }
ExpandedSubBlockEnd.gif              }

ExpandedBlockEnd.gif          }

None.gif   
private void GVList_RowDeleting(object sender, GridViewDeleteEventArgs e)
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif{GridView a = (GridView)sender;
InBlock.gif              
try
ExpandedSubBlockStart.gifContractedSubBlock.gif              
dot.gif{
InBlock.gif                  
string fullpath = SQLParser.StringParse(a.DataKeys[e.RowIndex]["FilePath"]);//.ToString();
InBlock.gif
                  if (fullpath.Length > 0)
ExpandedSubBlockStart.gifContractedSubBlock.gif                  
dot.gif{
ContractedSubBlock.gifExpandedSubBlockStart.gif                      
Read Excel to Table#region Read Excel to Table
InBlock.gif                      
//处理该条记录
ExpandedSubBlockEnd.gif
                      #endregion

ExpandedSubBlockEnd.gif                  }

InBlock.gif  
InBlock.gif
ExpandedSubBlockEnd.gif              }

InBlock.gif              
catch (Exception ex)
ExpandedSubBlockStart.gifContractedSubBlock.gif              
dot.gif{
ContractedSubBlock.gifExpandedSubBlockStart.gif                  
Loghandle by Tony 2008.11.21#region Loghandle by Tony 2008.11.21
InBlock.gif                  
//string loginid = EmptyString;
InBlock.gif                  
//myLogger.Error(GetErrorMessage(loginid, 1), ex);
ExpandedSubBlockEnd.gif
                   #endregion

ExpandedSubBlockEnd.gif              }

InBlock.gif              
//BindList();
ExpandedBlockEnd.gif
          }

第二种方式,用GVList_RowCommand事件

ContractedBlock.gif ExpandedBlockStart.gif Code
None.gifprotected void GVList_RowDataBound(object sender, GridViewRowEventArgs e)
ExpandedBlockStart.gifContractedBlock.gif          
dot.gif{
InBlock.gif              
if (e.Row.RowType == DataControlRowType.DataRow)
ExpandedSubBlockStart.gifContractedSubBlock.gif              
dot.gif{
InBlock.gif                  LinkButton lbUpdate 
= (LinkButton)e.Row.FindControl("cmdImport");
ExpandedSubBlockStart.gifContractedSubBlock.gif                  
if (lbUpdate != nulldot.gif{ lbUpdate.CommandArgument = SQLParser.StringParse(DataBinder.Eval(e.Row.DataItem, "FilePath")); }
ExpandedSubBlockEnd.gif              }

ExpandedBlockEnd.gif          }
 
None.gif 
None.gif  
private void GVList_RowCommand(object sender, GridViewCommandEventArgs e)
ExpandedBlockStart.gifContractedBlock.gif          
dot.gif{
ContractedSubBlock.gifExpandedSubBlockStart.gif              
Execute Batch Operations#region  Execute Batch Operations
InBlock.gif              
if (e.CommandName == "Import")
ExpandedSubBlockStart.gifContractedSubBlock.gif              
dot.gif{
InBlock.gif                  
try
ExpandedSubBlockStart.gifContractedSubBlock.gif                  
dot.gif{
InBlock.gif                      
string fullpath = SQLParser.StringParse(e.CommandArgument);//.ToString();
InBlock.gif
                      if (fullpath.Length > 0)
ExpandedSubBlockStart.gifContractedSubBlock.gif                      
dot.gif{
ContractedSubBlock.gifExpandedSubBlockStart.gif                       
Read Excel to Table#region Read Excel to Table
InBlock.gif                      
//处理该条记录
ExpandedSubBlockEnd.gif
                      #endregion

InBlock.gif 
InBlock.gif
ExpandedSubBlockEnd.gif                      }

ExpandedSubBlockEnd.gif                  }

InBlock.gif                  
catch (Exception ex)
ExpandedSubBlockStart.gifContractedSubBlock.gif                  
dot.gif{
ContractedSubBlock.gifExpandedSubBlockStart.gif                      Loghandle by Tony 
2008.11.21Loghandle by Tony 2008.11.21#region Loghandle by Tony 2008.11.21
InBlock.gif                      
//string loginid = EmptyString;
InBlock.gif                      
//myLogger.Error(GetErrorMessage(loginid, 1), ex);
ExpandedSubBlockEnd.gif
                      #endregion

ExpandedSubBlockEnd.gif                  }

InBlock.gif                  
//BindList();
ExpandedSubBlockEnd.gif
              }

ExpandedSubBlockEnd.gif              
#endregion

ExpandedBlockEnd.gif          }

 第三种方式,在数据不大的情况下,可以用ViewState来缓存DataTable,此时可以直接操作DataTable的Row,只需找到Row的索引即可。

 第四种方式,可以用GridViewRow来找到索引,道理同上, 可以参考
http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.gridviewrow.aspx

转载于:https://www.cnblogs.com/downmoon/archive/2008/12/04/1347581.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值