RadGrid1_ItemInserted doesnt get fired when calling from OnItemInserted. I want to show client error message (exception message). Currently with below code it simply won't insert data if i enter wrong data type value in any of radgrid column but wouldn't throw error message too. I want to show user a error message. Please help me. Thanks in advance.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="HPPRawData.aspx.cs" Inherits="HPPDemo.HPPRawData" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<telerik:RadGrid ID="RadGrid1" AutoGenerateColumns="False"
AllowPaging="True" runat="server" OnItemDataBound="OnItemDataBoundHandler"
DataSourceID="SqlDataSource1" FilterType="HeaderContext" EnableHeaderContextFilterMenu="True" EnableHeaderContextMenu="True" DataKeyNames="ID" OnItemInserted="RadGrid1_ItemInserted"
ShowStatusBar="True" GroupPanelPosition="Top" CellSpacing="-1" GridLines="Both" AllowSorting="True" AllowAutomaticDeletes="True" AllowAutomaticInserts="True" AllowAutomaticUpdates="True" AutoGenerateDeleteColumn="True" AutoGenerateEditColumn="True">
<GroupingSettings CollapseAllTooltip="Collapse all groups"></GroupingSettings>
<MasterTableView ShowFooter="false" EditMode="InPlace" CommandItemDisplay="TopAndBottom" DataSourceID="SqlDataSource1" DataKeyNames="ID">
<RowIndicatorColumn Visible="False">
</RowIndicatorColumn>
<ExpandCollapseColumn Created="True">
</ExpandCollapseColumn>
<Columns>
<telerik:GridBoundColumn DataField="ID" DataType="System.Int32" FilterControlAltText="Filter ID column" HeaderText="ID" ReadOnly="True" SortExpression="ID" UniqueName="ID">
</telerik:GridBoundColumn>
<%-- <telerik:GridBoundColumn DataField="Year" DataType="System.Int32" FilterControlAltText="Filter Year column" HeaderText="Year" SortExpression="Year" UniqueName="Year">
</telerik:GridBoundColumn>--%>
<telerik:GridTemplateColumn HeaderText="Year" SortExpression="Year"
UniqueName="Year" EditFormColumnIndex="1" Visible="True">
<HeaderStyle Width="80px"></HeaderStyle>
<ItemTemplate>
<asp:Label runat="server" ID="Year" Text='<%# Eval("Year") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<br />
<asp:TextBox runat="server" ID="tbReorderLevel" Text='<%# Bind("Year") %>'></asp:TextBox>
<div style="color: #e93100;">
</div>
<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="Invalid input"
ControlToValidate="tbReorderLevel" OnServerValidate="CustomValidator1_ServerValidate">
</asp:CustomValidator>
</EditItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn UniqueName="WeekEnding" HeaderText="WeekEnding"
ItemStyle-Width="400px">
<ItemTemplate>
<%#DataBinder.Eval(Container.DataItem, "WeekEnding")%>
</ItemTemplate>
<EditItemTemplate>
<telerik:RadDatePicker ID="picker1" runat="server" DbSelectedDate='<%# Bind("WeekEnding") %>'
DefaultInsertValue="Today" Culture="Swedish (Sweden)">
</telerik:RadDatePicker>
</EditItemTemplate>
<ItemStyle Width="400px"></ItemStyle>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn UniqueName="RunDate" HeaderText="RunDate"
ItemStyle-Width="400px">
<ItemTemplate>
<%#DataBinder.Eval(Container.DataItem, "RunDate")%>
</ItemTemplate>
<EditItemTemplate>
<telerik:RadDatePicker ID="picker2" runat="server" DbSelectedDate='<%# Bind("RunDate") %>'
DefaultInsertValue="Today" Culture="Swedish (Sweden)">
</telerik:RadDatePicker>
</EditItemTemplate>
<ItemStyle Width="400px"></ItemStyle>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn UniqueName="SKU" HeaderText="Supplier" SortExpression="SKU"
ItemStyle-Width="400px">
<FooterTemplate>
Template footer
</FooterTemplate>
<FooterStyle VerticalAlign="Middle" HorizontalAlign="Center" />
<ItemTemplate>
<%#DataBinder.Eval(Container.DataItem, "SKU")%>
</ItemTemplate>
<EditItemTemplate>
<telerik:RadComboBox runat="server" ID="RadComboBox1" EnableLoadOnDemand="True" DataTextField="item_No_Name"
DataValueField="item_No" OnItemsRequested="RadComboBoxProduct_ItemsRequested"
HighlightTemplatedItems="true" Height="140px" Width="220px" DropDownWidth="420px" Filter="StartsWith"
DataSourceID="SqlDataSource3" SelectedValue='<%#Bind("SKU") %>'>
</telerik:RadComboBox>
</EditItemTemplate>
<ItemStyle Width="400px"></ItemStyle>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn UniqueName="ExpirationDate" HeaderText="ExpirationDate"
ItemStyle-Width="400px">
<ItemTemplate>
<%#DataBinder.Eval(Container.DataItem, "ExpirationDate")%>
</ItemTemplate>
<EditItemTemplate>
<telerik:RadDatePicker ID="picker3" runat="server" DataSourceID="SqlDataSource1" DbSelectedDate='<%# Bind("ExpirationDate") %>'
DefaultInsertValue="Today" Culture="Swedish (Sweden)">
</telerik:RadDatePicker>
</EditItemTemplate>
<ItemStyle Width="400px"></ItemStyle>
</telerik:GridTemplateColumn>
<telerik:GridBoundColumn DataField="UnitsProduced" DataType="System.Int32" FilterControlAltText="Filter UnitsProduced column" HeaderText="UnitsProduced" SortExpression="UnitsProduced" UniqueName="UnitsProduced">
<ColumnValidationSettings EnableRequiredFieldValidation="true" EnableModelErrorMessageValidation="true">
<RequiredFieldValidator ForeColor="Red" ErrorMessage="This field is required"></RequiredFieldValidator>
<ModelErrorMessage BackColor="Red" />
</ColumnValidationSettings>
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="PackagesPerCase" DataType="System.Int32" FilterControlAltText="Filter PackagesPerCase column" HeaderText="PackagesPerCase" SortExpression="PackagesPerCase" UniqueName="PackagesPerCase">
<ColumnValidationSettings EnableRequiredFieldValidation="true" EnableModelErrorMessageValidation="true">
<RequiredFieldValidator ForeColor="Red" ErrorMessage="This field is required"></RequiredFieldValidator>
<ModelErrorMessage BackColor="Red" />
</ColumnValidationSettings>
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="TotalPackages" DataType="System.Int32" FilterControlAltText="Filter TotalPackages column" HeaderText="TotalPackages" SortExpression="TotalPackages" UniqueName="TotalPackages">
<ColumnValidationSettings EnableRequiredFieldValidation="true" EnableModelErrorMessageValidation="true">
<RequiredFieldValidator ForeColor="Red" ErrorMessage="This field is required"></RequiredFieldValidator>
<ModelErrorMessage BackColor="Red" />
</ColumnValidationSettings>
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="Pre_HPPLeaker_LoosePackaging" DataType="System.Int32" FilterControlAltText="Filter Pre_HPPLeaker_LoosePackaging column" HeaderText="Pre_HPPLeaker_LoosePackaging" SortExpression="Pre_HPPLeaker_LoosePackaging" UniqueName="Pre_HPPLeaker_LoosePackaging">
<ColumnValidationSettings EnableRequiredFieldValidation="true" EnableModelErrorMessageValidation="true">
<RequiredFieldValidator ForeColor="Red" ErrorMessage="This field is required"></RequiredFieldValidator>
<ModelErrorMessage BackColor="Red" />
</ColumnValidationSettings>
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="Post_HPP_Leaker_LoosePackaging" DataType="System.Int32" FilterControlAltText="Filter Post_HPP_Leaker_LoosePackaging column" HeaderText="Post_HPP_Leaker_LoosePackaging" SortExpression="Post_HPP_Leaker_LoosePackaging" UniqueName="Post_HPP_Leaker_LoosePackaging">
<ColumnValidationSettings EnableRequiredFieldValidation="true" EnableModelErrorMessageValidation="true">
<RequiredFieldValidator ForeColor="Red" ErrorMessage="This field is required"></RequiredFieldValidator>
<ModelErrorMessage BackColor="Red" />
</ColumnValidationSettings>
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="LineageLot" DataType="System.Int32" FilterControlAltText="Filter LineageLot column" HeaderText="LineageLot" SortExpression="LineageLot" UniqueName="LineageLot">
<ColumnValidationSettings EnableRequiredFieldValidation="true" EnableModelErrorMessageValidation="true">
<RequiredFieldValidator ForeColor="Red" ErrorMessage="This field is required"></RequiredFieldValidator>
<ModelErrorMessage BackColor="Red" />
</ColumnValidationSettings>
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="LotCode3" FilterControlAltText="Filter LotCode3 column" HeaderText="LotCode3" SortExpression="LotCode3" UniqueName="LotCode3">
<ColumnValidationSettings EnableRequiredFieldValidation="true" EnableModelErrorMessageValidation="true">
<RequiredFieldValidator ForeColor="Red" ErrorMessage="This field is required"></RequiredFieldValidator>
<ModelErrorMessage BackColor="Red" />
</ColumnValidationSettings>
</telerik:GridBoundColumn>
<%-- <telerik:GridTemplateColumn HeaderText="Machine_Name" ItemStyle-Width="240px">
<ItemTemplate>
<%#DataBinder.Eval(Container.DataItem, "Machine_Name")%>
</ItemTemplate>
<EditItemTemplate>
<telerik:RadDropDownList RenderMode="Lightweight" runat="server" ID="RadDropDownList1" SelectedValue='<%#Bind("SKU") %>'>
<Items>
<telerik:DropDownListItem Text="Machineon" />
<telerik:DropDownListItem Text="MachineTw" />
</Items>
</telerik:RadDropDownList>
</EditItemTemplate>
</telerik:GridTemplateColumn>--%>
<telerik:GridTemplateColumn HeaderText="Machine_Name" ItemStyle-Width="240px">
<ItemTemplate>
<%#DataBinder.Eval(Container.DataItem, "Machine_Name")%>
</ItemTemplate>
<EditItemTemplate>
<telerik:RadComboBox runat="server" ID="RadComboBox8" DataTextField="Machine_Name" RenderMode="Lightweight"
DataValueField="Machine_Name" DataSourceID="SqlDataSource2" SelectedValue='<%#Bind("Machine_Name") %>'>
</telerik:RadComboBox>
</EditItemTemplate>
</telerik:GridTemplateColumn>
<%-- %> <telerik:GridBoundColumn DataField="Machine_Name" FilterControlAltText="Filter Machine_Name column" HeaderText="Machine_Name" SortExpression="Machine_Name" UniqueName="Machine_Name">
</telerik:GridBoundColumn>--%>
<telerik:GridBoundColumn DataField="Date_Created" FilterControlAltText="Filter Date_Created column" HeaderText="Date_Created" SortExpression="Date_Created" UniqueName="Date_Created">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="Date_Modified" FilterControlAltText="Filter Date_Modified column" HeaderText="Date_Modified" SortExpression="Date_Modified" UniqueName="Date_Modified">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="Modified_by" FilterControlAltText="Filter Modified_by column" HeaderText="Modified_by" SortExpression="Modified_by" UniqueName="Modified_by">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="Item_Name" Display="false" Visible="false" FilterControlAltText="Filter Item_Name column" HeaderText="Item_Name" SortExpression="Item_Name" UniqueName="Item_Name">
</telerik:GridBoundColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
<asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:HPPConnectionString %>" SelectCommand="select distinct item_no,item_No_Name from dimitem"></asp:SqlDataSource>
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:HPPConnectionString %>" SelectCommand="select distinct machine_name from HPP_RAW_DATA where Machine_Name is not null"></asp:SqlDataSource>
</div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:HPPConnectionString %>"
SelectCommand="SELECT * FROM [dbo].[vw_HPPRaw]"
DeleteCommandType="StoredProcedure"
DeleteCommand="HPPRawData_DeleteRecord"
InsertCommandType="StoredProcedure"
InsertCommand="HPPRawData_InsertRecord"
UpdateCommandType="StoredProcedure"
UpdateCommand="HPPRawData_UpdateRecord">
<DeleteParameters>
<asp:Parameter Name="ID" Type="Int32" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="Year" Type="Int32" />
<asp:Parameter Name="WeekEnding" Type="DateTime" />
<asp:Parameter Name="RunDate" Type="DateTime" />
<asp:Parameter Name="SKU" Type="String" />
<asp:Parameter Name="ExpirationDate" Type="DateTime" />
<asp:Parameter Name="UnitsProduced" Type="Int32" />
<asp:Parameter Name="PackagesPerCase" Type="Int32" />
<asp:Parameter Name="TotalPackages" Type="Int32" />
<asp:Parameter Name="Pre_HPPLeaker_LoosePackaging" Type="Int32" />
<asp:Parameter Name="Post_HPP_Leaker_LoosePackaging" Type="Int32" />
<asp:Parameter Name="LineageLot" Type="Int32" />
<asp:Parameter Name="LotCode3" Type="String" />
<asp:Parameter Name="Machine_Name" Type="String" />
<asp:Parameter Name="Date_Created" Type="DateTime" />
<asp:Parameter Name="Date_Modified" Type="DateTime" />
<asp:Parameter Name="Modified_by" Type="String" />
<asp:Parameter Name="Item_Name" Type="String" />
</InsertParameters>
<UpdateParameters>
<asp:Parameter Name="ID" Type="Int32" />
<asp:Parameter Name="Year" Type="Int32" />
<asp:Parameter Name="WeekEnding" Type="DateTime" />
<asp:Parameter Name="RunDate" Type="DateTime" />
<asp:Parameter Name="SKU" Type="String" />
<asp:Parameter Name="ExpirationDate" Type="DateTime" />
<asp:Parameter Name="UnitsProduced" Type="Int32" />
<asp:Parameter Name="PackagesPerCase" Type="Int32" />
<asp:Parameter Name="TotalPackages" Type="Int32" />
<asp:Parameter Name="Pre_HPPLeaker_LoosePackaging" Type="Int32" />
<asp:Parameter Name="Post_HPP_Leaker_LoosePackaging" Type="Int32" />
<asp:Parameter Name="LineageLot" Type="Int32" />
<asp:Parameter Name="LotCode3" Type="String" />
<asp:Parameter Name="Machine_Name" Type="String" />
<asp:Parameter Name="Date_Created" Type="DateTime" />
<asp:Parameter Name="Date_Modified" Type="DateTime" />
<asp:Parameter Name="Modified_by" Type="String" />
<asp:Parameter Name="Item_Name" Type="String" />
</UpdateParameters>
</asp:SqlDataSource>
</form>
</body>
</html>
Code behind file is below :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections;
using Telerik.Web.UI;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
namespace HPPDemo
{
public partial class HPPRawData : System.Web.UI.Page
{
protected void OnItemDataBoundHandler(object sender, GridItemEventArgs e)
{
/* if (e.Item.IsInEditMode)
{
GridEditableItem item = (GridEditableItem)e.Item;
if (!(e.Item is IGridInsertItem))
{
RadComboBox combo = (RadComboBox)item.FindControl("RadComboBox1");
RadComboBoxItem selectedItem = new RadComboBoxItem();
selectedItem.Text = ((DataRowView)e.Item.DataItem)["Customer_Name"].ToString();
selectedItem.Value = ((DataRowView)e.Item.DataItem)["Customer_Name_No"].ToString();
selectedItem.Attributes.Add("Account_Name", ((DataRowView)e.Item.DataItem)["Account_Name"].ToString());
combo.Items.Add(selectedItem);
selectedItem.DataBind();
Session["Customer_Name_No"] = selectedItem.Value;
}
}*/
}
protected void RadComboBoxProduct_ItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)
{
string sqlSelectCommand = "SELECT distinct item_No_Name from [dbo].[dimitem] WHERE [item_No_Name] LIKE @text + '%'";
SqlDataAdapter adapter = new SqlDataAdapter(sqlSelectCommand,
ConfigurationManager.ConnectionStrings["HPPConnectionString"].ConnectionString);
adapter.SelectCommand.Parameters.AddWithValue("@text", e.Text);
DataTable dataTable = new DataTable();
adapter.Fill(dataTable);
RadComboBox RadComboBoxProduct = (RadComboBox)sender;
foreach (DataRow dataRow in dataTable.Rows)
{
RadComboBoxItem item = new RadComboBoxItem();
item.Text = (string)dataRow["item_No_Name"];
item.Value = dataRow["item_No_Name"].ToString();
RadComboBoxProduct.Items.Add(item);
item.DataBind();
}
}
protected void CustomValidator1_ServerValidate(object source, System.Web.UI.WebControls.ServerValidateEventArgs args)
{
if (args.Value.StartsWith("4"))
{
args.IsValid = false;
}
}
private string gridMessage = null;
private void SetMessage(string message)
{
gridMessage = message;
}
protected void RadGrid1_ItemInserted(object source, GridInsertedEventArgs e)
{
if (e.Exception != null)
{
e.ExceptionHandled = true;
SetMessage("Product cannot be inserted. Reason: " + e.Exception.Message);
}
else
{
SetMessage("New product is inserted!");
}
}
/* protected void OnSelectedIndexChangedHandler(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
{
Session["item_NO_Name"] = e.Value;
}
*/
}
}