or
Hi,
Is there any way to validate cell values of inserted/updated row of Radgrid on client side?
Is there any event like onBeforeAdd/OnBeforeUpdate where we can get inserted/edited row and validate entered column values?
Thanks in advance.
Sushma

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="EditFormCS.aspx.cs" Inherits="ArconCalendar.EditFormCS" %><br><br><%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %><br><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><br><html xmlns="http://www.w3.org/1999/xhtml"><br> <br><head id="Head1" runat="server"> <title>Edit dialog</title></head><br> <body> <form id="form1" runat="server"> <br> <div style="height: auto; width: 300px"><br> <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server"><telerik:RadScriptManager ID="RadScriptManager1" runat="server"></telerik:RadScriptManager><br> <telerik:RadFormDecorator ID="RadFormDecorator1" runat="server" DecoratedControls="All" Width="400px" /><br> <telerik:RadWindowManager ID="window1" runat="server" ReloadOnShow="true" > </telerik:RadWindowManager><br> <br /><br> <br /><br> <asp:DetailsView ID="DetailsView1" DataKeyNames="TaskID" runat="server" AutoGenerateRows="False" <br> Height="50px" Width="300px" OnItemCommand="DetailsView1_ItemCommand" OnItemInserting="DetailsView1_ItemInserting" <br> BorderWidth="0" CellPadding="0" CellSpacing="7" GridLines="None" OnItemUpdating="DetailsView1_ItemUpdating" OnModeChanging="DetailsView1_ModeChanging" ><br> <Fields><br> <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" ReadOnly="false"/><br> <asp:BoundField DataField="ProjectName" HeaderText="ProjectName" SortExpression="ProjectName" ReadOnly="false" /><br> <asp:TemplateField HeaderText="Assigned Users"><br> <ItemTemplate><br> <telerik:RadComboBox runat="server" ID="Users" EnableCheckAllItemsCheckBox="true" <br> CheckBoxes="true" DataTextField="UserName" DataValueField="UserID" OnLoad="Users_Load" ><br><br><br><br> </telerik:RadComboBox><br><br> </ItemTemplate><br> </asp:TemplateField><br><br> <asp:TemplateField HeaderText="Deadline"><br><br> <ItemTemplate><br> <telerik:RadDatePicker EnableViewState="false" MinDate="01/01/1850"<br> MaxDate="01/01/2100" Skin="Telerik" ID="DeadlineDate"<br> DbSelectedDate='<%# DataBinder.Eval(Container.DataItem, "DeadlineDate") %>'<br> runat="server"><br> </telerik:RadDatePicker><br><br><br> </ItemTemplate><br><br> </asp:TemplateField><br> <br> <br> <asp:TemplateField HeaderText="Note"><br> <ItemTemplate><br> <asp:TextBox ID="Note" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"Note") %>' TextMode="MultiLine" Width="160px"><br> </asp:TextBox><br> </ItemTemplate><br> </asp:TemplateField><br><br> <asp:CheckboxField DataField="IsActive" HeaderText="IsActive" SortExpression="IsActive" ReadOnly="false" /><br> <br> <asp:CommandField ShowEditButton="True" ButtonType="Button" EditText="Update" /><br> <asp:CommandField ShowInsertButton="True" ButtonType="Button" InsertText="Insert"/><br> <asp:CommandField ShowCancelButton="true" ButtonType="Button" CancelText="Cancel" /><br><br> </Fields><br> <br> </asp:DetailsView><br> <br> </div> <br><br> </form><br><br> </body><br><br></html>using System;<br>using System.Collections.Generic;<br>using System.Data;<br>using System.Data.SqlClient;<br>using System.Linq;<br>using System.Web;<br>using System.Web.UI;<br>using System.Web.UI.WebControls;<br>using Telerik.Web.UI;<br><br>namespace ArconCalendar<br>{<br> public partial class EditFormCS : System.Web.UI.Page<br> {<br> protected override void OnInit(EventArgs e)<br> {<br> base.OnInit(e);<br> <br> <br> if (Request.QueryString["taskid"] == null)<br> {<br> DetailsView1.DefaultMode = DetailsViewMode.Insert;<br> }<br> else<br> {<br> DetailsView1.DataSource = DB.GetData("Tasks_Select", "@TaskID", Request.QueryString["taskid"]);<br> DetailsView1.DefaultMode = DetailsViewMode.Edit;<br> DetailsView1.DataBind();<br> <br> }<br> this.Page.Title = "Editing record";<br> }<br><br> protected void DetailsView1_ItemCommand(object sender, DetailsViewCommandEventArgs e)<br> {<br> if (e.CommandName == "Edit")<br> {<br><br> ClientScript.RegisterStartupScript(Page.GetType(), "mykey", "CloseAndRebind();", true);<br> }<br> else if (e.CommandName == "Insert")<br> {<br> ClientScript.RegisterStartupScript(Page.GetType(), "mykey", "CloseAndRebind('navigateToInserted');", true);<br> }<br> else<br> {<br> // ClientScript.RegisterStartupScript(Page.GetType(), "mykey", "CancelEdit();", true);<br> }<br> }<br><br> protected void DetailsView1_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)<br> {<br> /*<br> //logic to truncate long string to prevent SQL error<br> for (int i = 1; i < 4; i++)<br> {<br> string val = e.NewValues[i - 1].ToString();<br> int maxLength = i * 10;<br> if (val.Length > maxLength) e.NewValues[i - 1] = val.Substring(0, maxLength);<br> }*/<br><br> string ids = ConcatUserID();<br><br> using (var conn = new SqlConnection(DB.connString))<br> using (var command = new SqlCommand("Tasks_Update", conn) { CommandType = CommandType.StoredProcedure })<br> {<br> conn.Open();<br> SqlDataAdapter da = new SqlDataAdapter(command);<br> command.Parameters.Add(new SqlParameter("@TaskID", e.Keys[0].ToString()));<br> command.Parameters.Add(new SqlParameter("@UserIDs",ids ));<br> <br> command.Parameters.Add(new SqlParameter("@Title",e.NewValues["Title"]));<br> command.Parameters.Add(new SqlParameter("@ProjectName", e.NewValues["ProjectName"]));<br><br> command.Parameters.Add(new SqlParameter("@DeadlineDate", (DetailsView1.FindControl("DeadlineDate") as RadDatePicker).SelectedDate));<br> command.Parameters.Add(new SqlParameter("@IsActive", e.NewValues["IsActive"]));<br><br> command.Parameters.Add(new SqlParameter("@Note", (DetailsView1.FindControl("Note") as TextBox).Text));<br> <br> command.ExecuteNonQuery();<br><br><br><br><br> }<br><br><br><br><br> }<br><br> private string ConcatUserID()<br> {<br> RadComboBox d = (DetailsView1.FindControl("Users") as RadComboBox);<br> string ids = "";<br> string separator = ";";<br><br><br> foreach (RadComboBoxItem item in d.Items)<br> {<br> if(item.Checked==true)<br> ids += item.Value + separator;<br><br> }<br> return ids;<br> }<br><br> protected void DetailsView1_ItemInserting(object sender, DetailsViewInsertEventArgs e)<br> {<br> string ids = ConcatUserID();<br> using (var conn = new SqlConnection(DB.connString))<br> using (var command = new SqlCommand("Tasks_Insert", conn) { CommandType = CommandType.StoredProcedure })<br> {<br> conn.Open();<br> SqlDataAdapter da = new SqlDataAdapter(command);<br> <br> command.Parameters.Add(new SqlParameter("@UserIDs", ids));<br><br> command.Parameters.Add(new SqlParameter("@Title", e.Values["Title"]));<br> command.Parameters.Add(new SqlParameter("@ProjectName", e.Values["ProjectName"]));<br><br> command.Parameters.Add(new SqlParameter("@DeadlineDate", (DetailsView1.FindControl("DeadlineDate") as RadDatePicker).SelectedDate));<br> command.Parameters.Add(new SqlParameter("@IsActive", e.Values["IsActive"]));<br><br> command.Parameters.Add(new SqlParameter("@Note", (DetailsView1.FindControl("Note") as TextBox).Text));<br><br> command.ExecuteNonQuery();<br><br><br><br><br> }<br><br> }<br><br> <br><br> protected void Users_Load(object sender, EventArgs e)<br> {<br> if (!IsPostBack)<br> {<br> RadComboBox rcb = (sender as RadComboBox);<br> DataTable dt = DB.GetData("UsersToTask_Select");<br> rcb.DataSource = dt;<br> rcb.DataBind();<br><br> <br> if (DetailsView1.CurrentMode == DetailsViewMode.Edit)<br> {<br> List<Guid> list = (from row in dt.AsEnumerable()<br> where row.Field<Guid?>("TaskID") ==Guid.Parse( DetailsView1.DataKey.Value.ToString())<br> select row.Field<Guid>("UserId")).ToList<Guid>();<br> foreach (RadComboBoxItem r in rcb.Items)<br> {<br> if (list.Contains(Guid.Parse(r.Value))) r.Checked = true;<br> <br> }<br><br> }<br> }<br> }<br><br> protected void DetailsView1_ModeChanging(object sender, DetailsViewModeEventArgs e)<br> {<br> if (e.CancelingEdit==true)<br> {<br> <br> ClientScript.RegisterStartupScript(Page.GetType(), "mykey", "CancelEdit();", true);<br> <br> }<br> else if (e.NewMode == DetailsViewMode.Edit)<br> {<br> ClientScript.RegisterStartupScript(Page.GetType(), "mykey", "CloseAndRebind();", true);<br> }<br> else if (e.NewMode == DetailsViewMode.Insert)<br> {<br> ClientScript.RegisterStartupScript(Page.GetType(), "mykey", "CloseAndRebind('navigateToInserted');", true);<br> }<br><br> }<br><br> <br><br> <br> }<br>}<br>