Hello,
I have the following problem: I have a module in my project which return DataTable by property (ie <object name>.Data is of DataTable type). Then I bind this to the RadGrid. Everything works fine to the moment when I'm trying to update the DataTable. In the beginning, I was able to get to edit mode but pressing Update didn't do the job (ie the row was still in edit mode). Now after some changes I'm not able even to get to edit mode. I'm using RadNumericTextBox in template fields. Version of RadControls is 2008.1 619. This my code:
[aspx]
<!-- I use master page that is why I decided to use RadAjaxManagerProxy -->
<telerik:RadAjaxManagerProxy ID="RadAjaxManagerProxy1" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="MarketShareRadGrid">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="MarketShareRadGrid" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManagerProxy>
...
<!-- This is my RadGrid -->
<telerik:RadGrid ID="MarketShareRadGrid" AllowAutomaticUpdates="true" AllowAutomaticDeletes="false"
Skin="Vista" Width="97%" AllowSorting="False" AutoGenerateColumns="false" GridLines="None"
runat="server" ShowFooter="True" AllowMultiRowSelection="True" AllowMultiRowEdit="True"
HorizontalAlign="NotSet" OnUpdateCommand="MarketShareRadGrid_UpdateCommand">
<MasterTableView Width="100%" GridLines="None" CommandItemDisplay="Top" DataKeyNames="Intervention"
EditMode="InPlace" HorizontalAlign="NotSet" AllowAutomaticInserts="True">
<CommandItemTemplate>
<div style="padding: 0 5px;">
Custom command item template
<asp:LinkButton ID="btnEditSelected" runat="server" CommandName="EditSelected" Visible='<%# MarketShareRadGrid.EditIndexes.Count == 0 %>'><img style="border:0px;vertical-align:middle;" alt="" src="../../DataEditing/Img/Edit.gif" />Edit selected</asp:LinkButton>
<asp:LinkButton ID="btnUpdateEdited" runat="server" CommandName="UpdateEdited" Visible='<%# MarketShareRadGrid.EditIndexes.Count > 0 %>'><img style="border:0px;vertical-align:middle;" alt="" src="../../DataEditing/Img/Update.gif" />Update</asp:LinkButton>
<asp:LinkButton ID="btnCancel" runat="server" CommandName="CancelAll" Visible='<%# MarketShareRadGrid.EditIndexes.Count > 0 || MarketShareRadGrid.MasterTableView.IsItemInserted %>'><img style="border:0px;vertical-align:middle;" alt="" src="../../DataEditing/Img/Cancel.gif" />Cancel editing</asp:LinkButton>
<asp:LinkButton ID="LinkButton4" runat="server" CommandName="RebindGrid"><img style="border:0px;vertical-align:middle;" alt="" src="../../DataEditing/Img/Refresh.gif" />Refresh table</asp:LinkButton>
</div>
</CommandItemTemplate>
<Columns>
<telerik:GridBoundColumn HeaderText="Intervention" UniqueName="Intervention" DataField="Intervention" ReadOnly="true" />
<telerik:GridTemplateColumn HeaderText="Year 1" UniqueName="Year 1" DataField="Year 1">
<ItemTemplate>
<telerik:RadNumericTextBox ID="Year1Item" runat="server" Skin="Outlook" MinValue="0" MaxValue="100" Type="Percent" Enabled="false"
Value='<%# (float)Eval("Year 1") %>' />
</ItemTemplate>
<EditItemTemplate>
<telerik:RadNumericTextBox ID="Year1Edit" runat="server" Skin="Outlook" ShowSpinButtons="true" MinValue="0" MaxValue="100" Type="Percent"
Value='<%# (float)DataBinder.Eval(Container.DataItem, "Year 1") %>' />
</EditItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
</MasterTableView>
<ClientSettings>
<Selecting AllowRowSelect="True" EnableDragToSelectRows="True" />
</ClientSettings>
</telerik:RadGrid>
[cs]
public partial class Screen1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Calculations.MarketShare marketShareObject = new MarketShare(-1); // I'm creating the object of my module closed in DLL
MarketShareRadGrid.DataSource = marketShareObject.Data; // The property Data returns DataTable
}
}
protected void MarketShareRadGrid_UpdateCommand(object source, GridCommandEventArgs e)
{
GridEditableItem editedItem = e.Item as GridEditableItem;
int rowNumber = editedItem.ItemIndex; // I'm checking which row is edited
double year1 = (double)(editedItem["Year 1"].Controls[1] as RadNumericTextBox).Value; // I'm taking a value which user provided
try
{
((DataTable)((RadGrid)source).DataSource).Rows[rowNumber]["Year 1"] = year1; // I'm writing this value to my DataTable
}
catch (Exception ex)
{
MarketShareRadGrid.Controls.Add(new LiteralControl("Unable to update value!"));
e.Canceled = true;
}
}
}
Thank you in advance for your help.
I have the following problem: I have a module in my project which return DataTable by property (ie <object name>.Data is of DataTable type). Then I bind this to the RadGrid. Everything works fine to the moment when I'm trying to update the DataTable. In the beginning, I was able to get to edit mode but pressing Update didn't do the job (ie the row was still in edit mode). Now after some changes I'm not able even to get to edit mode. I'm using RadNumericTextBox in template fields. Version of RadControls is 2008.1 619. This my code:
[aspx]
<!-- I use master page that is why I decided to use RadAjaxManagerProxy -->
<telerik:RadAjaxManagerProxy ID="RadAjaxManagerProxy1" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="MarketShareRadGrid">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="MarketShareRadGrid" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManagerProxy>
...
<!-- This is my RadGrid -->
<telerik:RadGrid ID="MarketShareRadGrid" AllowAutomaticUpdates="true" AllowAutomaticDeletes="false"
Skin="Vista" Width="97%" AllowSorting="False" AutoGenerateColumns="false" GridLines="None"
runat="server" ShowFooter="True" AllowMultiRowSelection="True" AllowMultiRowEdit="True"
HorizontalAlign="NotSet" OnUpdateCommand="MarketShareRadGrid_UpdateCommand">
<MasterTableView Width="100%" GridLines="None" CommandItemDisplay="Top" DataKeyNames="Intervention"
EditMode="InPlace" HorizontalAlign="NotSet" AllowAutomaticInserts="True">
<CommandItemTemplate>
<div style="padding: 0 5px;">
Custom command item template
<asp:LinkButton ID="btnEditSelected" runat="server" CommandName="EditSelected" Visible='<%# MarketShareRadGrid.EditIndexes.Count == 0 %>'><img style="border:0px;vertical-align:middle;" alt="" src="../../DataEditing/Img/Edit.gif" />Edit selected</asp:LinkButton>
<asp:LinkButton ID="btnUpdateEdited" runat="server" CommandName="UpdateEdited" Visible='<%# MarketShareRadGrid.EditIndexes.Count > 0 %>'><img style="border:0px;vertical-align:middle;" alt="" src="../../DataEditing/Img/Update.gif" />Update</asp:LinkButton>
<asp:LinkButton ID="btnCancel" runat="server" CommandName="CancelAll" Visible='<%# MarketShareRadGrid.EditIndexes.Count > 0 || MarketShareRadGrid.MasterTableView.IsItemInserted %>'><img style="border:0px;vertical-align:middle;" alt="" src="../../DataEditing/Img/Cancel.gif" />Cancel editing</asp:LinkButton>
<asp:LinkButton ID="LinkButton4" runat="server" CommandName="RebindGrid"><img style="border:0px;vertical-align:middle;" alt="" src="../../DataEditing/Img/Refresh.gif" />Refresh table</asp:LinkButton>
</div>
</CommandItemTemplate>
<Columns>
<telerik:GridBoundColumn HeaderText="Intervention" UniqueName="Intervention" DataField="Intervention" ReadOnly="true" />
<telerik:GridTemplateColumn HeaderText="Year 1" UniqueName="Year 1" DataField="Year 1">
<ItemTemplate>
<telerik:RadNumericTextBox ID="Year1Item" runat="server" Skin="Outlook" MinValue="0" MaxValue="100" Type="Percent" Enabled="false"
Value='<%# (float)Eval("Year 1") %>' />
</ItemTemplate>
<EditItemTemplate>
<telerik:RadNumericTextBox ID="Year1Edit" runat="server" Skin="Outlook" ShowSpinButtons="true" MinValue="0" MaxValue="100" Type="Percent"
Value='<%# (float)DataBinder.Eval(Container.DataItem, "Year 1") %>' />
</EditItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
</MasterTableView>
<ClientSettings>
<Selecting AllowRowSelect="True" EnableDragToSelectRows="True" />
</ClientSettings>
</telerik:RadGrid>
[cs]
public partial class Screen1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Calculations.MarketShare marketShareObject = new MarketShare(-1); // I'm creating the object of my module closed in DLL
MarketShareRadGrid.DataSource = marketShareObject.Data; // The property Data returns DataTable
}
}
protected void MarketShareRadGrid_UpdateCommand(object source, GridCommandEventArgs e)
{
GridEditableItem editedItem = e.Item as GridEditableItem;
int rowNumber = editedItem.ItemIndex; // I'm checking which row is edited
double year1 = (double)(editedItem["Year 1"].Controls[1] as RadNumericTextBox).Value; // I'm taking a value which user provided
try
{
((DataTable)((RadGrid)source).DataSource).Rows[rowNumber]["Year 1"] = year1; // I'm writing this value to my DataTable
}
catch (Exception ex)
{
MarketShareRadGrid.Controls.Add(new LiteralControl("Unable to update value!"));
e.Canceled = true;
}
}
}
Thank you in advance for your help.