Telerik RadGrid - DataSet (增删查改)

记录Telerik学习过程~

 

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

 

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

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 , 方便后面调用.

代码
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事件里绑定~

 

代码
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事件里实现修改.

 

代码
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 增加~

 

代码
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 删除~

 

代码
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"];
        }

 

 

 

前台页面一些效果.

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) ? "插入" : "更新" %> . 因为插入更新用的是同一个窗口~ 所以用这句判断是插入还是更新~

posted @ 2010-08-14 09:58  -小卓-  阅读(3789)  评论(1编辑  收藏  举报