Telerik RadGrid - DataSet (增删查改)

记录Telerik学习过程~

 

Telerik RadGrid 数据展现、修改、删除、增加, 数据源使用后台DataSet绑定.

 

RadGrid支持弹出编辑形式。 条件是需要设置EditMode属性弹出。 EditMode="PopUp"

ExpandedBlockStart.gif aspx前台代码
< telerik:RadGrid ID = " RadGrid1 "  runat = " server "  GridLines = " None "
        AllowPaging
= " True "  PageSize = " 10 "  AllowSorting = " True "  AutoGenerateColumns = " false "
        ShowStatusBar
= " true "  AllowAutomaticDeletes = " True "  AllowAutomaticInserts = " True "
        AllowAutomaticUpdates
= " True "  HorizontalAlign = " NotSet "  onupdatecommand = " RadGrid1_UpdateCommand "  
        onneeddatasource
= " RadGrid1_NeedDataSource "  ondeletecommand = " RadGrid1_DeleteCommand "  oninsertcommand = " RadGrid1_InsertCommand " >
        
< MasterTableView CommandItemDisplay = " TopAndBottom "  DataKeyNames = " MenuID "  EditMode = " PopUp " >
    
< CommandItemSettings ExportToPdfText = " Export to Pdf "  AddNewRecordText = " 添加新项 "  
                RefreshText
= " 更新 " ></ CommandItemSettings >
            
< Columns >
                
< telerik:GridEditCommandColumn EditText = " 修改 " >
                
</ telerik:GridEditCommandColumn >
                
< telerik:GridBoundColumn UniqueName = " MenuID "  HeaderText = " 菜单序号 "  DataField = " MenuID " >
                    
< HeaderStyle Width = " 60px " ></ HeaderStyle >
                
</ telerik:GridBoundColumn >
                
< telerik:GridBoundColumn UniqueName = " SortNo "  HeaderText = " 排序序号 "  DataField = " SortNo " >
                
</ telerik:GridBoundColumn >
                
< telerik:GridBoundColumn UniqueName = " ParentID "  HeaderText = " 父节点 "  DataField = " ParentID " >
                
</ telerik:GridBoundColumn >
                
< telerik:GridBoundColumn UniqueName = " Name "  HeaderText = " 名称 "  DataField = " Name " >
                
</ telerik:GridBoundColumn >
                
< telerik:GridBoundColumn UniqueName = " IconUrl "  HeaderText = " 图标路径 "  DataField = " IconUrl " >
                
</ telerik:GridBoundColumn >
                
< telerik:GridBoundColumn UniqueName = " Url "  HeaderText = " 链接路径 "  DataField = " Url " >
                
</ telerik:GridBoundColumn >
                
< telerik:GridButtonColumn CommandName = " Delete "  Text = " 删除 "  ConfirmText = " 确定删除吗? "  UniqueName = " column " >
                
</ telerik:GridButtonColumn >
            
</ Columns >
            
< EditFormSettings InsertCaption = " 添加新数据 "  CaptionFormatString = " 修改 菜单序号: {0} "
                CaptionDataField
= " MenuID "  EditFormType = " Template "  
                PopUpSettings
- Modal = " true " >
                
< EditColumn UniqueName = " EditCommandColumn1 "  EditText = " 修改 " ></ EditColumn >
                
< FormTemplate >
                    
< table id = " Table1 "  cellspacing = " 1 "  cellpadding = " 1 "  width = " 250 "  border = " 0 " >
                        
< tr >
                            
< td >
                                排序序号:
                            
</ td >
                            
< td >
                                
< asp:TextBox ID = " txtSortNo "  Text = ' <%# Bind( "SortNo") %> '  runat = " server " >
                                
</ asp:TextBox >
                            
</ td >
                        
</ tr >
                        
< tr >
                            
< td >
                                父节点:
                            
</ td >
                            
< td >
                                
< asp:TextBox ID = " txtParentID "  Text = ' <%# Bind( "ParentID") %> '  runat = " server " >
                                
</ asp:TextBox >
                            
</ td >
                        
</ tr >
                        
< tr >
                            
< td >
                                名称:
                            
</ td >
                            
< td >
                                
< asp:TextBox ID = " txtName "  Text = ' <%# Bind( "Name") %> '  runat = " server " >
                                
</ asp:TextBox >
                            
</ td >
                        
</ tr >
                        
< tr >
                            
< td colspan = " 2 " >
                                
< hr  />
                            
</ td >
                        
</ tr >
                        
< tr >
                            
< td >
                                是否启用:
                            
</ td >
                            
< td >
                                
< asp:CheckBox ID = " ckEnable "  runat = " server "  Checked = ' <%# (Container is GridEditFormInsertItem) ? false : Eval("IsEnable") %> ' />
                            
</ td >
                        
</ tr >
                        
< tr >
                            
< td >
                                图标路径:
                            
</ td >
                            
< td >
                                
< asp:TextBox ID = " txtIconUrl "  runat = " server "  Text = ' <%# Bind( "IconUrl" ) %> ' >
                                
</ asp:TextBox >
                            
</ td >
                        
</ tr >
                        
< tr >
                            
< td >
                                链接路径:
                            
</ td >
                            
< td >
                                
< asp:TextBox ID = " txtUrl "  runat = " server "  Text = ' <%# Bind( "Url") %> ' >
                                
</ asp:TextBox >
                            
</ td >
                        
</ tr >
                    
</ table >
                    
< table style = " width: 100% " >
                        
< tr >
                            
< td align = " right "  colspan = " 2 " >
                                
< asp:Button ID = " Button1 "  Text = ' <%# (Container is GridEditFormInsertItem) ? "插入" : "更新" %> '
                                    runat
= " server "  CommandName = ' <%# (Container is GridEditFormInsertItem) ? "PerformInsert" : "Update" %> ' >
                                
</ asp:Button >& nbsp;
                                
< asp:Button ID = " Button2 "  Text = " 取消 "  runat = " server "  CausesValidation = " False "  CommandName = " Cancel " >
                                
</ asp:Button >
                            
</ td >
                        
</ tr >
                    
</ table >
                
</ FormTemplate >
            
</ EditFormSettings >
            
< PagerStyle FirstPageToolTip = " 首页 "  LastPageToolTip = " 尾页 "  NextPagesToolTip = " 下一页 "  
                NextPageToolTip
= " 下一页 "
                PageSizeLabelText
= " 页数: "  PrevPagesToolTip = " 上一页 "  PrevPageToolTip = " 上一页 "   />
        
</ MasterTableView >
    
</ telerik:RadGrid >

 

 

ShowStatusBar="true"  //显示工具栏

EditFormType="Template"  //所有类型的编辑形式弹出可以显示在编辑类型AutoGenerated、WebUserControl和Template

在弹出EditForm设置GridEditFormSettings控制通过的PopUpSettings属性对象。 它暴露3属性:

  • 高度 -定义的百分比或弹出高度的像素
  • 宽度-定义宽度的百分比或弹出像素
  • 滚动条-定义是否应显示滚动条并在编辑表格。此设置优先级较高,因此,如果高度设置,但不显示垂直滚动条的内容需要更多的空间,在弹出会被重新调整,以适应整个内容。默认值为 None。

 

设置下DataSet , 方便后面调用.

ExpandedBlockStart.gif 代码
public  DataSet MenuData
    {
        
get
        {
            
object  obj  =   this .Session[ " MenuData " ];
            
if  (obj  !=   null )
            {
                
return  (DataSet)obj;
            }

            DataSet menuData 
=   new  DataSet();

            String ConnString 
=  ConfigurationManager.ConnectionStrings[ " ConnectionString " ].ConnectionString;
            SqlConnection conn 
=   new  SqlConnection(ConnString);
            SqlDataAdapter adapter 
=   new  SqlDataAdapter();
            adapter.SelectCommand 
=   new  SqlCommand( " SELECT * FROM Menu " , conn);

            adapter.Fill(menuData, 
" Menu " );

            
this .Session[ " MenuData " =  menuData;

            
return  menuData;
        }
    }

 

 

绑定RadGird,在NeedDataSource事件里绑定~

 

ExpandedBlockStart.gif 代码
protected   void  RadGrid1_NeedDataSource( object  source, GridNeedDataSourceEventArgs e)
    {
        
this .RadGrid1.DataSource  =  MenuData;
        
this .MenuData.Tables[ " Menu " ].PrimaryKey  =   new  DataColumn[] {  this .MenuData.Tables[ " Menu " ].Columns[ " MenuID " ] };//设置主键
    }

 

 

 

UpdateCommand事件里实现修改.

 

ExpandedBlockStart.gif 代码
protected   void  RadGrid1_UpdateCommand( object  source, Telerik.Web.UI.GridCommandEventArgs e)
    {
        GridEditableItem editedItem 
=  e.Item  as  GridEditableItem;
        DataRow[] changedRows 
=  MenuData.Tables[ " Menu " ].Select( " MenuID =  "   +  editedItem.OwnerTableView.DataKeyValues[editedItem.ItemIndex][ " MenuID " ]);
        
if  (changedRows.Length  !=   1 )
        {
            e.Canceled 
=   true ;
            
return ;
        }
        Hashtable newValues 
=   new  Hashtable();
        newValues[
" SortNo " =  (editedItem.FindControl( " txtSortNo " as  TextBox).Text;
        newValues[
" ParentID " =  (editedItem.FindControl( " txtParentID " as  TextBox).Text;
        newValues[
" Name " =  (editedItem.FindControl( " txtName " as  TextBox).Text;
        newValues[
" IsEnable " =  (editedItem.FindControl( " ckEnable " as  CheckBox).Checked;
        newValues[
" IconUrl " =  (editedItem.FindControl( " txtIconUrl " as  TextBox).Text;
        newValues[
" Url " =  (editedItem.FindControl( " txtUrl " as  TextBox).Text;
        newValues[
" MenuID " =  editedItem.OwnerTableView.DataKeyValues[editedItem.ItemIndex][ " MenuID " ];
        changedRows[
0 ].BeginEdit();
        
try
        {
        
// 遍历,把数据存到DataRow
             foreach  (DictionaryEntry entry  in  newValues)
            {
                changedRows[
0 ][( string )entry.Key]  =  entry.Value;
            }
            changedRows[
0 ].EndEdit();
            
this .MenuData.AcceptChanges();  // 更新数据源
            MSSQL.SqlServerHelper.UpdateMenu();  // 更新数据库方法
        }
        
catch  (Exception ex)
        {
            changedRows[
0 ].CancelEdit();
            RadGrid1.Controls.Add(
new  LiteralControl( " Unable to update Employees. Reason:  "   +  ex.Message));
            e.Canceled 
=   true ;
        }
        RadGrid1.MasterTableView.Items[e.Item.ItemIndex].Edit 
=   false ; // 关闭当前修改窗口
    }

 

 

 RadGrid1_InsertCommand 增加~

 

ExpandedBlockStart.gif 代码
protected   void  RadGrid1_InsertCommand( object  source, GridCommandEventArgs e)
    {
        GridEditableItem editedItem 
=  e.Item  as  GridEditableItem;

        DataRow newRow 
=  MenuData.Tables[ " Menu " ].NewRow();
        Hashtable newValues 
=   new  Hashtable();

        newValues[
" SortNo " =  (editedItem.FindControl( " txtSortNo " as  TextBox).Text;
        newValues[
" ParentID " =  (editedItem.FindControl( " txtParentID " as  TextBox).Text;
        newValues[
" Name " =  (editedItem.FindControl( " txtName " as  TextBox).Text;
        newValues[
" IsEnable " =  (editedItem.FindControl( " ckEnable " as  CheckBox).Checked;
        newValues[
" IconUrl " =  (editedItem.FindControl( " txtIconUrl " as  TextBox).Text;
        newValues[
" Url " =  (editedItem.FindControl( " txtUrl " as  TextBox).Text;

    
// 获取表Menu最后一个的ID + 1 
        newValues[ " MenuID " =  ( int ) this .MenuData.Tables[ " Menu " ].Rows[ this .MenuData.Tables[ " Menu " ].Rows.Count  -   1 ][ " MenuID " +   1 ;

        
try
        {
            
foreach  (DictionaryEntry entry  in  newValues)
                newRow[(
string )entry.Key]  =  entry.Value;
            
this .MenuData.Tables[ " Menu " ].Rows.Add(newRow);
            
this .MenuData.Tables[ " Menu " ].AcceptChanges();
            MSSQL.SqlServerHelper.Insert();
        }
        
catch  (Exception ex)
        {
            e.Canceled 
=   true ;
        }
    }

 

 

 

RadGrid1_DeleteCommand 删除~

 

ExpandedBlockStart.gif 代码
string  ID  =  e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex][ " MenuID " ].ToString();
        DataSet ds 
=  (DataSet)Session[ " MenuData " ];
        
if  (ds.Tables[ " Menu " ].Rows.Find(ID)  !=   null )
        {
            ds.Tables[
" Menu " ].Rows.Find(ID).Delete();
            ds.Tables[
" Menu " ].AcceptChanges();

            MSSQL.SqlServerHelper.DeleteMenu(ID);

            Session[
" DataSource " =  ds.Tables[ " Menu " ];
        }

 

 

 

前台页面一些效果.

ExpandedBlockStart.gif RadAjax ~
< telerik:RadAjaxManager ID = " RadAjaxManager1 "  runat = " server " >
        
< AjaxSettings >
            
< telerik:AjaxSetting AjaxControlID = " RadGrid1 " >
                
< UpdatedControls >
                    
< telerik:AjaxUpdatedControl ControlID = " RadGrid1 "   />
                
</ UpdatedControls >
            
</ telerik:AjaxSetting >
        
</ AjaxSettings >
    
</ telerik:RadAjaxManager >

 

 

双击行, 编辑状态:

在RadGrid里加入

<ClientSettings>
       <ClientEvents OnRowDblClick="RowDblClick" />
</ClientSettings>

 

JS加入:

function RowDblClick(sender, eventArgs) {
       sender.get_masterTableView().editItem(eventArgs.get_itemIndexHierarchical());

}

 

细节:

因为是英文的,所以可以找到****Text去改文本,那样提示或文本都是中文的了 - -,

<%# (Container is GridEditFormInsertItem) ? "插入" : "更新" %> . 因为插入更新用的是同一个窗口~ 所以用这句判断是插入还是更新~

转载于:https://www.cnblogs.com/weialei/archive/2010/08/14/Telerik_DataSet.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值