I am trying to add/delete rows using on client(webmethods), but when the last row is deleted the
CommandItemDisplay is also getting deleted.
2. Also the grid layout is changing when a row is deleted/added.
3. The Databinder expression for the years attended column does not work after rebind.
can you please point out the problems from the code below
Class:public class Education{ #region Private fields private int? _ID; private string _Degree; private string _Program; private string _School; private DateTime _From; private DateTime _To; #endregion #region Constructors public Education() { } public Education(int ID, string Degree, string Program, string School, DateTime From, DateTime To) { this._ID = ID; this._Program = Program; this._Degree = Degree; this._School = School; this._From = From; this._To = To; } #endregion #region Public properties public int? ID { get { return this._ID.Value; } set { if ((this._ID != value)) { this._ID = value; } } } public string Degree { get { return this._Degree; } set { if ((this._Degree != value)) { this._Degree = value; } } } public string Program { get { return this._Program; } set { if ((this._Program != value)) { this._Program = value; } } } public string School { get { return this._School; } set { if ((this._School != value)) { this._School = value; } } } public DateTime From { get { return this._From; } set { if ((this._From != value)) { this._From = value; } } } public DateTime To { get { return this._To; } set { if ((this._To != value)) { this._To = value; } } } #endregion}ASPX: <telerik:RadGrid ID="RadGrid1" Width="489px" runat="server" Skin="Windows7" OnDataBound="RadGrid1_DataBound" OnItemCreated="RadGrid1_ItemCreated" OnPreRender="RadGrid1_PreRender"> <MasterTableView CommandItemDisplay="Bottom" AutoGenerateColumns="False" CommandItemSettings-ShowRefreshButton="False" HeaderStyle-CssClass="gridHeader" CommandItemSettings-AddNewRecordText="Add" DataKeyNames="ID" ClientDataKeyNames="ID" ShowHeadersWhenNoRecords="true"> <Columns> <telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditColumn"> <ItemStyle /> <HeaderStyle Width="1%" HorizontalAlign="Center" /> <ItemStyle HorizontalAlign="Left" /> </telerik:GridEditCommandColumn> <telerik:GridTemplateColumn UniqueName="ID" HeaderText="ID" ItemStyle-Width="1px"> <ItemTemplate> <asp:Label ID="LblID" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "ID") %>'> ></asp:Label> </ItemTemplate> <HeaderStyle Width="0%" HorizontalAlign="Left" /> <ItemStyle HorizontalAlign="Left" /> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn UniqueName="Degree" HeaderText="Degree" ItemStyle-Width="80px"> <ItemTemplate> <asp:Label ID="lblDegree" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Degree") %>'> ></asp:Label> </ItemTemplate> <HeaderStyle Width="12%" HorizontalAlign="Left" /> <ItemStyle HorizontalAlign="Left" /> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn UniqueName="Program" HeaderText="Program" ItemStyle-Width="80px"> <ItemTemplate> <asp:Label ID="lblProgram" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Program") %>'>></asp:Label> </ItemTemplate> <HeaderStyle Width="30%" HorizontalAlign="Left" /> <ItemStyle HorizontalAlign="Left" /> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn UniqueName="School" HeaderText="School" ItemStyle-Width="80px"> <ItemTemplate> <asp:Label ID="lblSchool" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "School") %>'>></asp:Label> </ItemTemplate> <HeaderStyle Width="37%" HorizontalAlign="Left" /> <ItemStyle HorizontalAlign="Left" /> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn UniqueName="YearsAttended" HeaderText="Years" ItemStyle-Width="80px"> <ItemTemplate> <asp:Label ID="lblFrom" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "From","{0:yyyy}") + " - " + DataBinder.Eval(Container.DataItem, "To","{0:yyyy}") %>'></asp:Label> </ItemTemplate> <HeaderStyle Width="23%" HorizontalAlign="Left" /> <ItemStyle HorizontalAlign="Left" /> </telerik:GridTemplateColumn> <telerik:GridButtonColumn CommandName="Delete" ButtonType="ImageButton" UniqueName="DeleteColumn"> <HeaderStyle Width="1%" HorizontalAlign="Center" /> <ItemStyle HorizontalAlign="Center" /> </telerik:GridButtonColumn> </Columns> <CommandItemTemplate> <div style="padding-top: 3px; margin-top: 3px;"> <asp:LinkButton Style="vertical-align: bottom" ID="btnAddEducation" runat="server" OnClientClick="return showEditEducation('Add');"> <img alt ="" src="Images/AddRecord.gif" style="border:0px;padding-left:2px;padding-right:5px;margin-top:0px;margin-top:-5px;"/>Add</asp:LinkButton> </div> </CommandItemTemplate> </MasterTableView> <ClientSettings> <Selecting AllowRowSelect="true" /> <ClientEvents OnRowSelected="rowSelected" /> <Scrolling UseStaticHeaders="true" /> </ClientSettings> </telerik:RadGrid>Code Behind: protected void Page_Load(object sender, EventArgs e){ educationList = new List<Education>(); educationList.Add(new Education(0, "X", "General", "stanford", Convert.ToDateTime("1/1/1988"), Convert.ToDateTime("1/1/2000"))); educationList.Add(new Education(0, "X", "General", "stanford", Convert.ToDateTime("1/1/1988"), Convert.ToDateTime("1/1/2000"))); educationList.Add(new Education(0, "X", "General", "stanford", Convert.ToDateTime("1/1/1988"), Convert.ToDateTime("1/1/2000"))); educationList.Add(new Education(0, "X", "General", "stanford", Convert.ToDateTime("1/1/1988"), Convert.ToDateTime("1/1/2000"))); RadGrid1.DataSource = educationList; RadGrid1.DataBind();}protected void RadGrid1_ItemCreated(object sender, GridItemEventArgs e) { if (e.Item is GridDataItem) { GridDataItem item = (GridDataItem)e.Item; ((ImageButton)item["DeleteColumn"].Controls[0]).Attributes.Add("onclick", "deleteCurrent('" + item.ItemIndex + "');return false;"); }}JavaScript: function deleteCurrent(index) { var grid = $find("<%= RadGrid1.ClientID %>"); var MasterTable = grid.get_masterTableView(); var row = MasterTable.get_dataItems()[index]; id = row.getDataKeyValue("ID") //access DataKeyValue if (id != null) { PageMethods.DeleteEducationByID(id, updateGrid); } return false; } function updateGrid(result) { var tableView = $find("<%= RadGrid1.ClientID %>").get_masterTableView(); if (result != null) { tableView.set_dataSource(result); tableView.dataBind(); var grid = $find("<%= RadGrid1.ClientID %>"); grid.repaint(); } }