I am using a asp.net TextBox control inside GridTemplateColumn and OnTextChanged event capuring the text entered by user.
save in memory and bind it back to the RadGrid onItemDataBound.
But after the Grid binds and shows up on screen. I cannot type in textbox control of any row and cannot type in the filter boxes, Radgrid is freezing.
It works after I click the mouse outside the grid and click on filter box or grid template textbox.
<telerik:RadGrid ID="rgPhysicalAccessReviewList" runat="server" ShowStatusBar="true" Visible="false" OnInit="rgPhysicalAccessReviewList_Init"
AutoGenerateColumns="False" AllowSorting="True" AllowMultiRowSelection="False" AllowMultiRowEdit="true" AllowFilteringByColumn="true"
OnItemCommand="rgPhysicalAccessReviewList_ItemCommand" OnItemDataBound="rgPhysicalAccessReviewList_ItemDataBound" EnableViewState="true"
AllowPaging="true" PageSize="150" OnNeedDataSource="rgPhysicalAccessReviewList_NeedDataSource">
<PagerStyle Mode="NumericPages"></PagerStyle>
<MasterTableView Width="100%" DataKeyNames="EmployeeID, AccessReviewID" EnableColumnsViewState="true" AllowMultiColumnSorting="True" HeaderStyle-Font-Bold="true" EditMode="EditForms">
<NoRecordsTemplate>
<div>No records to display</div>
</NoRecordsTemplate>
<Columns>
<telerik:GridTemplateColumn AllowFiltering="false" HeaderStyle-HorizontalAlign="Left" HeaderText="Business Manager Comments" HeaderStyle-Width ="300px" HeaderButtonType="TextButton" UniqueName="CommentsBox">
<ItemTemplate>
<asp:TextBox ID="txtBxComments" OnTextChanged="txtBxComments_OnTextChanged" Text='<%# Eval("ManagerComments") %>' AutoPostBack="true" runat="server" TextMode="MultiLine" Wrap="True" MaxLength="500" Height="50px" Width="300px"></asp:TextBox>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn AllowFiltering="false" HeaderStyle-HorizontalAlign="Left" HeaderText="Previous Quarter Comments" HeaderStyle-Width ="300px" HeaderButtonType="TextButton" UniqueName="PQCommentsBox">
<ItemTemplate>
<asp:Label ID="lblComments" runat="server"></asp:Label>
</ItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
<NestedViewTemplate>
<telerik:RadGrid ID="rgEmployeeDetails" AutoGenerateColumns="False" runat="server" AllowPaging="True" BorderWidth="0px" OnNeedDataSource="rgEmployeeDetails_NeedDataSource">
<MasterTableView Width="75%" DataKeyNames="EmployeeID" ShowHeader="false" AllowMultiColumnSorting="True" >
<Columns>
<telerik:GridTemplateColumn HeaderStyle-BorderWidth="0px">
<ItemTemplate>
<asp:Panel ID="NestedViewPanel" runat="server" CssClass="viewWrap">
<div class="contactWrap">
<fieldset style="padding: 10px;">
<legend style="padding: 5px;"><b>Details of Employee: <%#Eval("LastName")%>, <%#Eval("FirstName")%></b>
</legend>
<table>
<tbody>
<tr>
<td>
<table class="fontDetails">
<tbody>
<tr>
<td style="font-weight: bold;">
Access Coordinator:
</td>
<td>
<asp:Label ID="Label2" Text='<%#Bind("AccessCoordinator") %>' runat="server"></asp:Label>
</td>
<td style="font-weight: bold;">
AC Phone:
</td>
<td>
<asp:Label ID="Label4" Text='<%#Bind("ACPhone") %>' runat="server"></asp:Label>
</td>
</tr>
<%-- <tr>
<td style="font-weight: bold;">
Previous Quarter Comments:
</td>
<td colspan="3">
<asp:Label ID="lblPQComments" Text='<%#Bind("PQComments") %>' runat="server" ></asp:Label>
</td>
</tr>--%>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</fieldset>
</div>
</asp:Panel>
</ItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
</NestedViewTemplate>
</MasterTableView>
<ClientSettings>
<Scrolling AllowScroll="true" SaveScrollPosition="true" UseStaticHeaders = "true" />
</ClientSettings>
<GroupingSettings CaseSensitive="false" />
</telerik:RadGrid>
--------------------------------------------------- code behind ---------------------------------------------------
public void txtBxComments_OnTextChanged(object sender, EventArgs e)
{
TextBox txtComments = (TextBox)sender;
GridDataItem item = (GridDataItem)txtComments.NamingContainer;
//Remove existing key-value pair if reediting the controls
if (reviewListChanges.Count > 0)
{
foreach (KeyValuePair<string, string> pair in reviewListChanges)
{
string[] keyValue = pair.Value.Split('|');
if (pair.Key.Equals(item["AccessReviewID"].Text) && keyValue[0].Equals("TextBox"))
{
reviewListChanges.Remove(pair);
break;
}
}
}
reviewListChanges.Add(new KeyValuePair<string, string>(item["AccessReviewID"].Text, "TextBox" + "|" + txtComments.Text));
}
protected void rgPhysicalAccessReviewList_ItemDataBound(object sender, GridItemEventArgs e)
{
try
{
if ((e.Item is GridDataItem))
{
if (reviewListChanges.Count > 0)
{
foreach (KeyValuePair<string, string> pair in reviewListChanges)
{
string[] keyValue = pair.Value.Split('|');
if (pair.Key.Equals(gridEditFormItem.OwnerTableView.DataKeyValues[gridEditFormItem.ItemIndex]["AccessReviewID"].ToString()))
{
if (keyValue[0] == "TextBox")
{
txtBx.Text = keyValue[1];
}
else
{
ddlList.SelectedValue = keyValue[1];
}
}
}
}
}
}
Please let me know, if any issues.
Appreciate your quick response on this.