<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
<ajaxsettings>
<telerik:AjaxSetting AjaxControlID="RadGrid1">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="RadGrid1" LoadingPanelID="RadAjaxLoadingPanel1" />
</UpdatedControls>
</telerik:AjaxSetting>
</ajaxsettings>
</telerik:RadAjaxManager>

| <telerik:RadGrid ID="radGridChangelog" runat="server" AllowPaging="false" AllowSorting="false" |
| AutoGenerateColumns="False" GridLines="Both" Width="100%" |
| OnNeedDataSource="RadGridChangelog_NeedDatasource" |
| OnItemDataBound="RadGridChangelog_ItemDataBound" |
| OnItemCreated="RadGridChangelog_ItemCreated"> |
| <MasterTableView DataKeyNames="id"> |
| <Columns> |
| <telerik:GridBoundColumn DataField="Id" Visible="false"> |
| </telerik:GridBoundColumn> |
| <telerik:GridTemplateColumn DataField="logtypeID" HeaderText="Logtype" UniqueName="Logtype"> |
| <ItemTemplate> |
| <asp:Label ID="lblLogtype" runat="server"></asp:Label> |
| </ItemTemplate> |
| </telerik:GridTemplateColumn> |
| <telerik:GridBoundColumn DataField="logdate" HeaderText="Logdate" UniqueName="Logdate"> |
| </telerik:GridBoundColumn> |
| <telerik:GridTemplateColumn HeaderText="User" UniqueName="User"> |
| <ItemTemplate> |
| <asp:Label ID="lblUser" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"User.firstname").ToString() + " " + DataBinder.Eval(Container.DataItem,"User.lastname").ToString() %>'></asp:Label> |
| </ItemTemplate> |
| </telerik:GridTemplateColumn> |
| <telerik:GridTemplateColumn DataField="message" HeaderText="Message" UniqueName="Message"> |
| <ItemTemplate> |
| <asp:Label ID="lblMessage" runat="server"></asp:Label> |
| </ItemTemplate> |
| </telerik:GridTemplateColumn> |
| <telerik:GridBoundColumn DataField="oldValue" HeaderText="OldValue" UniqueName="OldValue"> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn DataField="newValue" HeaderText="NewValue" UniqueName="NewValue"> |
| </telerik:GridBoundColumn> |
| </Columns> |
| <RowIndicatorColumn> |
| <HeaderStyle Width="20px"></HeaderStyle> |
| </RowIndicatorColumn> |
| <ExpandCollapseColumn> |
| <HeaderStyle Width="20px"></HeaderStyle> |
| </ExpandCollapseColumn> |
| </MasterTableView> |
| </telerik:RadGrid> |
| protected void RadGridChangelog_NeedDatasource(object source, GridNeedDataSourceEventArgs e) |
| { |
| RadGrid radGrid = source as RadGrid; |
| radGrid.DataSource = BLDocLog.GetDocLogs(CacheHelper.Instance.Document.id); |
| } |
| protected void RadGridChangelog_ItemCreated(object sender, GridItemEventArgs e) |
| { |
| if (e.Item is GridHeaderItem) |
| { |
| GridHeaderItem headerItem = e.Item as GridHeaderItem; |
| LiteralControl literal = headerItem["Logtype"].Controls[0] as LiteralControl; |
| literal.Text = LanguageHelper.GetText("Logtype"); |
| literal = headerItem["Logdate"].Controls[0] as LiteralControl; |
| literal.Text = LanguageHelper.GetText("Logdate"); |
| literal = headerItem["Message"].Controls[0] as LiteralControl; |
| literal.Text = LanguageHelper.GetText("Message"); |
| literal = headerItem["OldValue"].Controls[0] as LiteralControl; |
| literal.Text = LanguageHelper.GetText("OldValue"); |
| literal = headerItem["NewValue"].Controls[0] as LiteralControl; |
| literal.Text = LanguageHelper.GetText("NewValue"); |
| } |
| } |
| protected void RadGridChangelog_ItemDataBound(object sender, GridItemEventArgs e) |
| { |
| if (e.Item is GridDataItem) |
| { |
| GridDataItem item = (GridDataItem)e.Item; |
| DocLog log = item.DataItem as DocLog; |
| if ((log.logtypeID == 0 || log.logtypeID == 1 ) && log.ValueNameID > -1) |
| { |
| System.Web.UI.WebControls.Label lblMessage = item.FindControl("lblMessage") as System.Web.UI.WebControls.Label; |
| lblMessage.Text = LanguageHelper.GetText("logValueName" + log.ValueNameID.ToString()); |
| } |
| else |
| { |
| System.Web.UI.WebControls.Label lblMessage = item.FindControl("lblMessage") as System.Web.UI.WebControls.Label; |
| lblMessage.Text = log.message ?? ""; |
| } |
| System.Web.UI.WebControls.Label lblLogtype = item.FindControl("lblLogtype") as System.Web.UI.WebControls.Label; |
| lblLogtype.Text = LanguageHelper.GetText("logtype" + log.logtypeID.ToString()); |
| } |
| } |
GridClientDeleteColumn. When a row is deleted we have a client side event handler tied to the RowDeleting event which is where we call another webservice to make the actual deletion. Everything is handled by client side code - we have nothing in our code-behind.
Occasionally, it looks like the delete doesn't work. What I believe is happening is that the grid is updating itself before the web method we call in the RowDeleting event handler has had a chance to complete. Is there a way to control when the grid updates itself on the client? What we would like to do is call the web service to delete the data in the RowDeleting event. Then, in the webservice callback method we have specified we would update the grid.