Radgrid is not refreshing at client side but at the server side radgrid contains Newly added row ,
I added a keydown event for the textbox "txtPartDescription"
in the Keydownevent i handled Tab key , i called Radajaxmanager_ajaxRequesr("Newrow") to insert new row into datasource and i assigned data source to radgrid . but radgrid is not refreshing at the browser it showing old data and also client event s are not working after binding .
Thanks in advance .
Please suggest any other approach to handle this .
please check the below code
protected void RadAjaxManager1_AjaxRequest(object sender, Telerik.Web.UI.AjaxRequestEventArgs e)
{
if (e.Argument == "NewRow")
{
if (Session["dtOld"] != null)
{
DataTable dt = (DataTable)Session["dtOld"];
DataRow dr = dt.NewRow();
dt.Rows.Add(dr);
grdParts.DataSource = dt;
grdParts.MasterTableView.Rebind();
// grdParts.DataBind();
Session["dtOld"] = dt;
}
}
else
{
DataTable dtRecords = new DataTable();
dtRecords.Rows.Clear();
foreach (GridColumn col in grdParts.Columns)
{
DataColumn colString = new DataColumn(col.UniqueName);
dtRecords.Columns.Add(colString);
}
foreach (GridDataItem row in grdParts.MasterTableView.Items) // loops through each rows in RadGrid
{
TextBox txt = (TextBox)row.FindControl("txtPartNumber");
string v = txt.Text;
DataRow dr = dtRecords.NewRow();
foreach (GridColumn col in grdParts.Columns) //loops through each column in RadGrid
dr[col.UniqueName] = row[col.UniqueName].Text;
dtRecords.Rows.Add(dr);
}
Session["save"] = dtRecords;
}
}
<script type="text/javascript">
var editedCell;
var arrayIndex = 0;
var editedItemsIds = [];
function RowCreated(sender, eventArgs) {
alert("row created");
var dataItem = eventArgs.get_gridDataItem();
for (var i = 0; i < dataItem.get_element().cells.length; i++) {
var cell = dataItem.get_element().cells[i];
if (cell) {
$addHandler(cell, "dblclick", Function.createDelegate(cell, ShowColumnEditor));
}
}
}
function RowClick(sender, eventArgs) {
if (editedCell) {
if ((eventArgs.get_domEvent().target.tagName == "TD") ||
(eventArgs.get_domEvent().target.tagName == "SPAN" && !eventArgs.get_domEvent().target.className.startsWith("rfd"))) {
alert("up");
UpdateValues(sender);
editedCell = false;
}
}
}
function UpdateValues(grid) {
alert("up");
var tHeadElement = grid.get_element().getElementsByTagName("thead")[0];
var headerRow = tHeadElement.getElementsByTagName("tr")[0];
var colName = grid.get_masterTableView().getColumnUniqueNameByCellIndex(headerRow, editedCell.cellIndex);
switch (colName) {
case "PartNumber":
HideEditor(editedCell, "textbox");
break;
case "PartDescription":
HideEditor(editedCell, "textbox");
break;
default:
break;
}
}
function HideEditor(editCell, editorType) {
var lbl = editCell.getElementsByTagName("span")[0];
switch (editorType) {
case "textbox":
var txtBox = editCell.getElementsByTagName("input")[0];
if (lbl.innerHTML != txtBox.value) {
lbl.innerHTML = txtBox.value;
editCell.style.border = "1px dashed";
}
txtBox.style.display = "none";
break;
default:
break;
}
lbl.style.display = "inline";
}
function RowDestroying(sender, eventArgs) {
var row = eventArgs.get_gridDataItem().get_element();
var cells = row.cells;
for (var j = 0, len = cells.length; j < len; j++) {
var cell = cells[j];
if (cell) {
$clearHandlers(cell);
}
}
}
function ShowColumnEditor() {
editedCell = this;
var cellText = this.getElementsByTagName("span")[0];
cellText.style.display = "none";
var colEditor = this.getElementsByTagName("input")[0];
colEditor.style.display = "";
colEditor.focus();
}
function ProcessChanges() {
$find("<%=RadAjaxManager1.ClientID%>").ajaxRequest();
return false;
}
function KeyPress(event, indx) {
if (event.keyCode == 9) {
var grid = $find("<%=grdParts.ClientID%>");
var MasterTable = grid.get_masterTableView();
var Rows = MasterTable.get_dataItems();
alert(Rows.length);
$find("<%=RadAjaxManager1.ClientID%>").ajaxRequest("NewRow");
$find("<%= grdParts.ClientID %>").get_masterTableView().rebind();
var r = $find("<%= grdParts.ClientID %>").get_masterTableView().get_dataItems();
alert(r.length);
}
}
</script>
<telerik:RadGrid runat="server" ID="grdParts" Width="300" AutoGenerateColumns="false"
AllowAutomaticInserts="true" >
<MasterTableView EditMode="InPlace" CommandItemDisplay="Bottom" >
<CommandItemTemplate>
<asp:Button ID="Button1" Text="Add new item" runat="server" CommandName="InitInsert" OnClick="btnaddnew_Click">
</asp:Button>
</CommandItemTemplate>
<Columns>
<telerik:GridTemplateColumn HeaderText="PartNumber" UniqueName="PartNumber">
<ItemTemplate>
<asp:Label runat="server" ID="lblPartNumber" Height="25" Text='<%#Eval("PartNumber")%>'></asp:Label>
<asp:TextBox runat="server" ID="txtPartNumber" Height="25" Text='<%#Eval("PartNumber")%>'
Style="display: none" ></asp:TextBox>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn HeaderText="PartDescription" UniqueName="PartDescription">
<ItemTemplate>
<asp:Label runat="server" ID="lblPartDescription" Height="25" Text='<%#Eval("PartDescription")%>'></asp:Label>
<asp:TextBox runat="server" ID="txtPartDescription" Height="25" Text='<%#Eval("PartDescription")%>'
Style="display: none"></asp:TextBox>
</ItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
</MasterTableView>
<ClientSettings>
<ClientEvents OnRowCreated="RowCreated" OnRowClick="RowClick" OnRowDestroying="RowDestroying">
</ClientEvents>
</ClientSettings>
</telerik:RadGrid>