Hi,
I am using radgrid version 2015 q2 template column and edit template column I want to implement duplicate record validation in insert and edit mode but I am not able to find controls in insert and edit mode of radgrid below is my code.
If there is another easy method to validate dublicate record in radgrid plz share with me thanks.
<telerik:RadGrid ID="grdLanguage" runat="server" AllowSorting="True" AllowPaging="True" AllowCustomPaging="True" PagerStyle-Mode="NextPrev" Skin="Bootstrap" ShowGroupPanel="false"> <GroupingSettings CaseSensitive="false" /> <MasterTableView AutoGenerateColumns="False" EditMode="PopUp" DataKeyNames="Language_ID" CommandItemDisplay="Top"> <EditFormSettings> <EditColumn FilterControlAltText="Filter EditCommandColumn1 column" UniqueName="EditCommandColumn1"> </EditColumn> <PopUpSettings Modal="true" /> </EditFormSettings> <CommandItemTemplate> <asp:LinkButton ID="LinkButton2" runat="server" CommandName="InitInsert" Visible='<%# !grdLanguage.MasterTableView.IsItemInserted %>'><img style="border:0px;vertical-align:middle;" alt="" src="Images/AddRecord.png"/>Add new</asp:LinkButton> </CommandItemTemplate> <RowIndicatorColumn> <HeaderStyle Width="20px"></HeaderStyle> </RowIndicatorColumn> <ExpandCollapseColumn> <HeaderStyle Width="20px"></HeaderStyle> </ExpandCollapseColumn> <Columns> <telerik:GridTemplateColumn HeaderText="Language Name"> <ItemTemplate> <asp:Label ID="lblCertName" runat="server" Text='<%# Bind("Language_Type.Language_Type_Name") %>'></asp:Label> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn HeaderText="Reading"> <ItemTemplate> <telerik:RadRating ID="ratReading" runat="server" DbValue='<%# Bind("Read_Skill") %>' ItemCount="5" ReadOnly="true"></telerik:RadRating> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn HeaderText="Writing"> <ItemTemplate> <telerik:RadRating ID="ratWriting" runat="server" DbValue='<%# Bind("Writing_Skill") %>' ItemCount="5" ReadOnly="true"></telerik:RadRating> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn HeaderText="Speaking"> <ItemTemplate> <telerik:RadRating ID="ratSpeaking" runat="server" DbValue='<%# Bind("Speaking_Skill") %>' ItemCount="5" ReadOnly="true"></telerik:RadRating> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridEditCommandColumn HeaderText="Edit" ButtonType="ImageButton"></telerik:GridEditCommandColumn> </Columns> <EditFormSettings EditFormType="Template" PopUpSettings-Height="350px" PopUpSettings-Width="600px"> <FormTemplate> <div class="form-horizontal panel panel-primary"> <div class="panel-heading">Previous Experience</div> <div class="panel-body"> <div> <asp:CustomValidator ID="CustValLanguage" OnServerValidate="CustValLanguage_ServerValidate1" ValidationGroup="valLanguage" runat="server" Display="Dynamic"> </asp:CustomValidator> </div> <div class="form-group required"> <asp:Label ID="Label1" CssClass="col-sm-2 control-label" runat="server" Text="Degree"></asp:Label> <div class="col-sm-10"> <telerik:RadComboBox ID="ddlLanguage_Type_ID" SelectedValue='<%# Bind("Language_Type_ID") %>' runat="server" Skin="Bootstrap"> <Items> <telerik:RadComboBoxItem Text="[Select Item]" Value="0" runat="server" /> <telerik:RadComboBoxItem Text="Arabic" Value="1" runat="server" /> <telerik:RadComboBoxItem Text="English" Value="2" runat="server" /> <telerik:RadComboBoxItem Text="Farsi" Value="5" runat="server" /> <telerik:RadComboBoxItem Text="French" Value="3" runat="server" /> <telerik:RadComboBoxItem Text="German" Value="4" runat="server" /> </Items> </telerik:RadComboBox> <br /> <span> <asp:RequiredFieldValidator ControlToValidate="ddlLanguage_Type_ID" InitialValue="[Select Item]" Display="Dynamic" SetFocusOnError="true" CssClass="text-danger" runat="server" ID="RequiredFieldValidator5" ErrorMessage="Language is Required!" ValidationGroup="valLanguage"></asp:RequiredFieldValidator></span> </div> </div> <div class="form-group "> <asp:Label ID="lblCertName" CssClass="col-sm-2 control-label" runat="server" Text="Reading"></asp:Label> <div class="col-sm-10"> <telerik:RadRating ID="ratReading" runat="server" Precision="Item" DbValue='<%# Bind("Read_Skill") %>' ItemCount="5"></telerik:RadRating> <span></span> </div> </div> <div class="form-group "> <asp:Label ID="lblCertAuthority" CssClass="col-sm-2 control-label" runat="server" Text="Writing"></asp:Label> <div class="col-sm-10"> <telerik:RadRating ID="ratWriting" runat="server" Precision="Item" DbValue='<%# Bind("Writing_Skill") %>' ItemCount="5"></telerik:RadRating> <span></span> </div> </div> <div class="form-group "> <asp:Label ID="Label2" CssClass="col-sm-2 control-label" runat="server" Text="Speacking"></asp:Label> <div class="col-sm-10"> <telerik:RadRating ID="ratSpeaking" Precision="Item" runat="server" DbValue='<%# Bind("Speaking_Skill") %>' ItemCount="5"></telerik:RadRating> <span></span> </div> </div> <asp:Button ID="btnUpdate" Text='<%# (Container is GridEditFormInsertItem) ? "Insert" : "Update" %>' runat="server" ValidationGroup="valLanguage" CommandName='<%# (Container is GridEditFormInsertItem) ? "PerformInsert" : "Update" %>'></asp:Button> <asp:Button ID="btnCancel" formnovalidate name="cancel" class="cancel" Text="Cancel" runat="server" CausesValidation="False" CommandName="Cancel"></asp:Button> </div> </div> </FormTemplate> </EditFormSettings> </MasterTableView> <ClientSettings> <ClientEvents OnPopUpShowing="PopUpShowing" /> </ClientSettings> <PagerStyle Mode="NextPrev" /> </telerik:RadGrid>
ServerSide Code
protected void CustValLanguage_ServerValidate1(object source, ServerValidateEventArgs args) { // Need here to validate code if (lstLanguage != null || lstLanguage.Count > 0) { if (grdLanguage.MasterTableView.IsItemInserted) { { RadComboBox ddlLanguage_Type_ID = (RadComboBox)grdLanguage.MasterTableView.GetInsertItem().FindControl("ddlLanguage_Type_ID"); for (int i = 0; i < lstLanguage.Count; i++) { if (lstLanguage[i].Language_Type_ID == Convert.ToInt32(ddlLanguage_Type_ID.SelectedValue)) { args.IsValid = false; CustomValidator CustValLanguage = (CustomValidator)grdLanguage.MasterTableView.GetInsertItem().FindControl("CustValLanguage"); CustValLanguage.ErrorMessage = "Already Exists"; } } } } else { // I want code here to check update record already exist or not in the current list collection } } }
private List<Language> lstLanguage { get { object obj = this.Session["lstLanguage"]; if ((!(obj == null))) { return ((List<Language>)(obj)); } List<Language> lst_Lang = new List<Language>(); this.Session["lstLanguage"] = lst_Lang; return lst_Lang; } set { // Adds value to session variable this.Session["lstLanguage"] = value; } }
private void GrdLanguage_ItemCommand(object sender, GridCommandEventArgs e) { switch (e.CommandName) { case "PerformInsert": if (Page.IsValid) { GridEditFormInsertItem insertedItem = (GridEditFormInsertItem)e.Item.OwnerTableView.GetInsertItem(); Language obj = new Language(); obj.Language_ID = (int)this.lstLanguage.Count + 1; obj.Language_Type_ID = Convert.ToInt32(((RadComboBox)insertedItem.FindControl("ddlLanguage_Type_ID")).SelectedValue); obj.Language_Type.Language_Type_Name = ((RadComboBox)insertedItem.FindControl("ddlLanguage_Type_ID")).SelectedItem.Text; obj.Read_Skill = Convert.ToInt32(((RadRating)insertedItem.FindControl("ratReading")).Value); obj.Writing_Skill = Convert.ToInt32(((RadRating)insertedItem.FindControl("ratWriting")).Value); obj.Speaking_Skill = Convert.ToInt32(((RadRating)insertedItem.FindControl("ratSpeaking")).Value); lstLanguage.Add(obj); grdLanguage.Rebind(); } break; case "Update": if (Page.IsValid) { // GridEditFormInsertItem insertedItem = (GridEditFormInsertItem)e.Item.OwnerTableView.GetInsertItem(); GridEditableItem editform = e.Item as GridEditableItem; var index = lstLanguage.FindIndex(p => p.Language_ID == (int)editform.OwnerTableView.DataKeyValues[editform.ItemIndex]["Language_ID"]); Language obj = new Language(); obj.Language_Type_ID = Convert.ToInt32(((RadComboBox)editform.FindControl("ddlLanguage_Type_ID")).SelectedValue); obj.Language_Type.Language_Type_Name = ((RadComboBox)editform.FindControl("ddlLanguage_Type_ID")).SelectedItem.Text; obj.Read_Skill = Convert.ToInt32(((RadRating)editform.FindControl("ratReading")).Value); obj.Writing_Skill = Convert.ToInt32(((RadRating)editform.FindControl("ratWriting")).Value); obj.Speaking_Skill = Convert.ToInt32(((RadRating)editform.FindControl("ratSpeaking")).Value); lstLanguage[index] = obj; grdLanguage.Rebind(); } break; default: break; } } private void GrdLanguage_NeedDataSource(object sender, GridNeedDataSourceEventArgs e) { grdLanguage.DataSource = lstLanguage; }