Custom module RadGrid not inserting
Hello,
I have been following Josh Morales' blog post on creating 'intra-site
modules' and have created on based on the Hello World module that he
created. I added a RadGrid to the backend pages, used LinqToSql to
retrieve/insert/update data. I also have an embedded form in the
<EditFormSettings> section of the RadGrid that includes 2
RadEditors, several textboxes, a checkbox, a drop down list (manually
populated) and a RadNumericTextBox.
The RadGrid shows the database information with no issues, but when I
try to insert/update a record I get no error messages, but the record
isn't inserted/updated. Also I have several methods
(RadGrid1_ItemInserted, RadGrid1_ItemUpdated, ...) that never get hit. I
have 'AllowAutomaticInserts', 'AllowAutomaticDeletes', and
AllowAutomaticUpdates' set to true in the RadGrid. The MasterTableView
has the LinqToSql datasource as well as the RadGrid. Some help would be
greatly appreciated as to what could be wrong.
=============================================================================
EDIT: I can delete the record from the database by clicking on the 'DELETE' button. Strange that I can delete but not insert.
=============================================================================
Here is the AdminIndex code (the backend code)
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="AdminIndex.ascx.cs" Inherits="SitefinityWebApp.Modules.Promos.Admin.AdminIndex" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<
telerik:RadScriptManager
ID
=
"RadScriptManager1"
runat
=
"server"
/>
<
telerik:RadAjaxManager
runat
=
"server"
ID
=
"RadAjaxManager1"
DefaultLoadingPanelID
=
"RadAjaxLoadingPanel1"
>
<
AjaxSettings
>
<
telerik:AjaxSetting
AjaxControlID
=
"RadGrid1"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadGrid1"
LoadingPanelID
=
"RadAjaxLoadingPanel1"
/>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadWindowManager1"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
</
AjaxSettings
>
</
telerik:RadAjaxManager
>
<
telerik:RadAjaxLoadingPanel
runat
=
"server"
ID
=
"RadAjaxLoadingPanel1"
/>
<
telerik:RadGrid
runat
=
"server"
ID
=
"RadGrid1"
DataSourceID
=
"LinqDataSource1"
AllowAutomaticUpdates
=
"true"
AllowAutomaticInserts
=
"true"
AllowAutomaticDeletes
=
"true"
AutoGenerateColumns
=
"false"
OnItemUpdated
=
"RadGrid1_ItemUpdated"
OnItemInserted
=
"RadGrid1_ItemInserted"
OnItemDeleted
=
"RadGrid1_ItemDeleted"
OnPreRender
=
"RadGrid1_PreRender"
>
<
MasterTableView
DataKeyNames
=
"ID"
DataSourceID
=
"LinqDataSource1"
CommandItemDisplay
=
"Top"
AllowPaging
=
"false"
>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"ID"
HeaderText
=
"Promo ID"
ReadOnly
=
"true"
ForceExtractValue
=
"Always"
/>
<
telerik:GridBoundColumn
DataField
=
"PromoHeader"
HeaderText
=
"Promo Header"
/>
<
telerik:GridBoundColumn
DataField
=
"PromoCollapsed"
HeaderText
=
"Promo Collapsed"
/>
<
telerik:GridBoundColumn
DataField
=
"PromoExpanded"
HeaderText
=
"Promo Expanded"
/>
<
telerik:GridBoundColumn
DataField
=
"PromoImageUrl"
HeaderText
=
"Promo Image Url"
/>
<
telerik:GridBoundColumn
DataField
=
"PromoType"
HeaderText
=
"Promo Type"
/>
<
telerik:GridBoundColumn
DataField
=
"PromoOrder"
HeaderText
=
"Promo Order"
/>
<
telerik:GridBoundColumn
DataField
=
"PromoActive"
HeaderText
=
"Promo Active?"
/>
<
telerik:GridEditCommandColumn
ButtonType
=
"ImageButton"
/>
<
telerik:GridButtonColumn
ConfirmText
=
"Delete this Promo?"
ConfirmDialogType
=
"RadWindow"
ConfirmTitle
=
"Delete"
ButtonType
=
"ImageButton"
CommandName
=
"Delete"
/>
</
Columns
>
<
EditFormSettings
EditFormType
=
"Template"
>
<
FormTemplate
>
<
table
>
<
tr
>
<
td
>Promo Header</
td
>
<
td
>Promo Collapsed Text</
td
>
</
tr
>
<
tr
>
<
td
><
asp:TextBox
ID
=
"PromoHeader"
runat
=
"server"
Text='<%# Bind("PromoHeader") %>'></
asp:TextBox
></
td
>
<
td
rowspan
=
"3"
>
<
telerik:RadEditor
id
=
"PromoCollapsed"
runat
=
"server"
Content='<%# Bind("PromoCollapsed") %>' Height="200px">
<
Tools
>
<
telerik:EditorToolGroup
>
<
telerik:EditorTool
Name
=
"PasteHtml"
Text
=
"Paste Html"
/>
<
telerik:EditorTool
Name
=
"InsertTableLight"
Text
=
"Insert Table Light"
/>
<
telerik:EditorTool
Name
=
"InsertLink"
Text
=
"Insert Link Dialog"
/>
<
telerik:EditorTool
Name
=
"InsertImage"
Text
=
"Insert Image Dialog"
/>
<
telerik:EditorTool
Name
=
"ImageManager"
ShortCut
=
"CTRL+M"
Text
=
"ImageManager with ImageEditor"
/>
<
telerik:EditorTool
Name
=
"StyleBuilder"
Text
=
"Style Builder"
/>
<
telerik:EditorTool
Name
=
"XhtmlValidator"
Text
=
"Xhtml Validator Dialog"
/>
<
telerik:EditorTool
Name
=
"TrackChangesDialog"
Text
=
"Track Changes Dialog"
/>
<
telerik:EditorTool
Name
=
"FormatCodeBlock"
Text
=
"Format Code Block Dialog"
/>
</
telerik:EditorToolGroup
>
<
telerik:EditorToolGroup
>
<
telerik:EditorTool
Name
=
"SetImageProperties"
/>
<
telerik:EditorTool
Name
=
"ImageMapDialog"
/>
<
telerik:EditorTool
Name
=
"FlashManager"
/>
<
telerik:EditorTool
Name
=
"MediaManager"
/>
<
telerik:EditorTool
Name
=
"DocumentManager"
/>
<
telerik:EditorTool
Name
=
"TemplateManager"
/>
<
telerik:EditorSeparator
/>
<
telerik:EditorTool
Name
=
"FindAndReplace"
/>
<
telerik:EditorTool
Name
=
"TableWizard"
/>
<
telerik:EditorTool
Name
=
"LinkManager"
/>
<
telerik:EditorTool
Name
=
"PageProperties"
/>
<
telerik:EditorSeparator
/>
<
telerik:EditorTool
Name
=
"AboutDialog"
/>
<
telerik:EditorTool
Name
=
"Help"
/>
</
telerik:EditorToolGroup
>
</
Tools
>
</
telerik:RadEditor
>
</
td
>
</
tr
>
<
tr
>
<
td
>Promo Type</
td
>
</
tr
>
<
tr
>
<
td
>
<
asp:DropDownList
ID
=
"PromoType"
runat
=
"server"
>
<
asp:ListItem
Value
=
"casino"
Text
=
"Casino"
Selected
=
"True"
/>
<
asp:ListItem
Value
=
"dining"
Text
=
"Dining"
/>
</
asp:DropDownList
>
</
td
>
</
tr
>
<
tr
>
<
td
>Promo Order</
td
>
<
td
>Promo Expanded Text</
td
>
</
tr
>
<
tr
>
<
td
><
telerik:RadNumericTextBox
ShowSpinButtons
=
"true"
IncrementSettings-InterceptArrowKeys
=
"true"
IncrementSettings-InterceptMouseWheel
=
"true"
runat
=
"server"
ID
=
"PromoOrder"
Width
=
"200px"
Text='<%# Bind("PromoOrder") %>'>
</
telerik:RadNumericTextBox
></
td
>
<
td
rowspan
=
"3"
>
<
telerik:RadEditor
id
=
"PromoExpanded"
runat
=
"server"
Content='<%# Bind("PromoExpanded") %>' Height="200px">
<
Tools
>
<
telerik:EditorToolGroup
>
<
telerik:EditorTool
Name
=
"PasteHtml"
Text
=
"Paste Html"
/>
<
telerik:EditorTool
Name
=
"InsertTableLight"
Text
=
"Insert Table Light"
/>
<
telerik:EditorTool
Name
=
"InsertLink"
Text
=
"Insert Link Dialog"
/>
<
telerik:EditorTool
Name
=
"InsertImage"
Text
=
"Insert Image Dialog"
/>
<
telerik:EditorTool
Name
=
"ImageManager"
ShortCut
=
"CTRL+M"
Text
=
"ImageManager with ImageEditor"
/>
<
telerik:EditorTool
Name
=
"StyleBuilder"
Text
=
"Style Builder"
/>
<
telerik:EditorTool
Name
=
"XhtmlValidator"
Text
=
"Xhtml Validator Dialog"
/>
<
telerik:EditorTool
Name
=
"TrackChangesDialog"
Text
=
"Track Changes Dialog"
/>
<
telerik:EditorTool
Name
=
"FormatCodeBlock"
Text
=
"Format Code Block Dialog"
/>
</
telerik:EditorToolGroup
>
<
telerik:EditorToolGroup
>
<
telerik:EditorTool
Name
=
"SetImageProperties"
/>
<
telerik:EditorTool
Name
=
"ImageMapDialog"
/>
<
telerik:EditorTool
Name
=
"FlashManager"
/>
<
telerik:EditorTool
Name
=
"MediaManager"
/>
<
telerik:EditorTool
Name
=
"DocumentManager"
/>
<
telerik:EditorTool
Name
=
"TemplateManager"
/>
<
telerik:EditorSeparator
/>
<
telerik:EditorTool
Name
=
"FindAndReplace"
/>
<
telerik:EditorTool
Name
=
"TableWizard"
/>
<
telerik:EditorTool
Name
=
"LinkManager"
/>
<
telerik:EditorTool
Name
=
"PageProperties"
/>
<
telerik:EditorSeparator
/>
<
telerik:EditorTool
Name
=
"AboutDialog"
/>
<
telerik:EditorTool
Name
=
"Help"
/>
</
telerik:EditorToolGroup
>
</
Tools
>
</
telerik:RadEditor
>
</
td
>
</
tr
>
<
tr
>
<
td
>Is Promo Active?</
td
>
</
tr
>
<
tr
>
<
td
><
asp:TextBox
ID
=
"PromoActive"
runat
=
"server"
Text='<%# Bind("PromoActive") %>'/> Yes
<
br
/><%# DataBinder.Eval(Container, "DataItem.PromoActive") %></
td
>
</
tr
>
<
tr
>
<
td
>Image Url</
td
>
<
td
></
td
>
</
tr
>
<
tr
>
<
td
><
asp:TextBox
ID
=
"PromoImageUrl"
runat
=
"server"
Text='<%# Bind("PromoImageUrl") %>'></
asp:TextBox
></
td
>
</
tr
>
<
tr
>
<
td
align
=
"right"
colspan
=
"2"
>
<
asp:Button
ID
=
"btnUpdate"
Text='<%# (Container is GridEditFormInsertItem) ? "Insert" : "Update" %>'
runat="server" CommandName='<%# (Container is GridEditFormInsertItem) ? "PerformInsert" : "Update" %>'>
</
asp:Button
>
<
asp:Button
ID
=
"btnCancel"
Text
=
"Cancel"
runat
=
"server"
CausesValidation
=
"False"
CommandName
=
"Cancel"
></
asp:Button
>
</
td
>
</
tr
>
</
table
>
</
FormTemplate
>
</
EditFormSettings
>
</
MasterTableView
>
<
PagerStyle
AlwaysVisible
=
"true"
/>
</
telerik:RadGrid
>
<
telerik:RadWindowManager
ID
=
"RadWindowManager1"
runat
=
"server"
/>
<
asp:LinqDataSource
ID
=
"LinqDataSource1"
runat
=
"server"
ContextTypeName
=
"SitefinityWebApp.Modules.Promos.Data.PromosDataContext"
EnableDelete
=
"True"
EnableInsert
=
"True"
EnableUpdate
=
"True"
TableName
=
"azb_promos"
>
</
asp:LinqDataSource
>
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Web;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
Telerik.Web.UI;
namespace
SitefinityWebApp.Modules.Promos.Admin
public
partial
class
AdminIndex : System.Web.UI.UserControl
protected
void
Page_Load(
object
sender, EventArgs e)
protected
void
RadGrid1_ItemUpdated(
object
source, GridUpdatedEventArgs e)
if
(e.Exception !=
null
)
e.ExceptionHandled =
true
;
ShowErrorMessage();
protected
void
RadGrid1_ItemInserted(
object
source, GridInsertedEventArgs e)
if
(e.Exception !=
null
)
e.ExceptionHandled =
true
;
ShowErrorMessage();
protected
void
RadGrid1_ItemDeleted(
object
source, GridDeletedEventArgs e)
if
(e.Exception !=
null
)
e.ExceptionHandled =
true
;
ShowErrorMessage();
protected
void
RadGrid1_PreRender(
object
sender, EventArgs e)
if
(!IsPostBack && RadGrid1.MasterTableView.Items.Count > 0)
RadGrid1.MasterTableView.Items[0].Expanded =
true
;
private
void
ShowErrorMessage()
RadAjaxManager1.ResponseScripts.Add(
string
.Format(
"window.radalert(\"Please enter valid data!\")"
));
Hello Rushman,
1. Enable the ViewState on the page.
2. Check whether the commands are triggered
protected
void
Page_Load(
object
sender, EventArgs e)
RadGrid1.ItemCommand +=
new
Telerik.Web.UI.GridCommandEventHandler(RadGrid1_ItemCommand);
RadGrid1.NeedDataSource +=
new
GridNeedDataSourceEventHandler(RadGrid1_NeedDataSource);
void
RadGrid1_NeedDataSource(
object
sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
var grid = sender
as
RadGrid;
grid.DataSource = CreateDataSource();
void
RadGrid1_ItemCommand(
object
sender, Telerik.Web.UI.GridCommandEventArgs e)
if
(e.CommandName ==
"Edit"
)
if
(e.CommandName ==
"Delete"
)
if
(e.CommandName ==
"InitInsert"
)