Hello,
I am using theEditMode ="Batch" RadGrid's feature to modify Data and send those changes to the database, I am populating the RadGrid from from a DataTable using the event OnNeedDataSource,
My question is, How I could send/commit the changes to the database manually? (in the examples seems to be automatic using the SqlDataSource for CRUD operations, if you could provide a code sample would be very appreciate it,
Thanks in advance,
I am using theEditMode ="Batch" RadGrid's feature to modify Data and send those changes to the database, I am populating the RadGrid from from a DataTable using the event OnNeedDataSource,
My question is, How I could send/commit the changes to the database manually? (in the examples seems to be automatic using the SqlDataSource for CRUD operations, if you could provide a code sample would be very appreciate it,
Thanks in advance,
14 Answers, 1 is accepted
0
Accepted
Princy
Top achievements
Rank 2
answered on 11 Dec 2013, 08:37 AM
Hi Raul,
You can do the operations manually in the code behind in the BatchEditCommand event. Below is the code to update, similarly you can do for insert and delete:
C#:
Thanks,
Princy
You can do the operations manually in the code behind in the BatchEditCommand event. Below is the code to update, similarly you can do for insert and delete:
C#:
protected void RadGrid1_BatchEditCommand(object sender, GridBatchEditingEventArgs e){ foreach (GridBatchEditingCommand command in e.Commands) { // For Update if ((command.Type == GridBatchEditingCommandType.Update)) { Hashtable newValues = command.NewValues; Hashtable oldValues = command.OldValues; string ID = newValues["ID"].ToString(); string Name = newValues["Name"].ToString(); // Code to Update to DB } }}Thanks,
Princy
0
Smitha
Top achievements
Rank 1
answered on 05 Mar 2014, 12:47 AM
Hashtable newValues = command.NewValues;
When I do this way, the NewValues have the column names, but the value on those is empty. Why could that be?
When I do this way, the NewValues have the column names, but the value on those is empty. Why could that be?
0
Princy
Top achievements
Rank 2
answered on 05 Mar 2014, 06:08 AM
Hi Smitha,
I'm not able to replicate the issue. Please take a look at the sample code and attached screenshot. Provide your code snippet for further help.
ASPX:
C#:
Thanks,
Princy
I'm not able to replicate the issue. Please take a look at the sample code and attached screenshot. Provide your code snippet for further help.
ASPX:
<telerik:RadGrid ID="RadGrid1" runat="server" OnNeedDataSource="RadGrid1_NeedDataSource" OnBatchEditCommand="RadGrid1_BatchEditCommand"> <MasterTableView EditMode="Batch" CommandItemDisplay="Top" DataKeyNames="OrderID"> <BatchEditingSettings OpenEditingEvent="Click" EditType="Cell" /> <Columns> <telerik:GridCheckBoxColumn UniqueName="IsTrue" HeaderText="IsTrue" DataField="IsTrue"> </telerik:GridCheckBoxColumn> <telerik:GridBoundColumn UniqueName="OrderID" DataField="OrderID" HeaderText="OrderID"/> <telerik:GridBoundColumn DataField="ShipName" HeaderText="ShipName" UniqueName="ShipName" /> </Columns> </MasterTableView> </telerik:RadGrid>C#:
protected void RadGrid1_BatchEditCommand(object sender, GridBatchEditingEventArgs e){ foreach (GridBatchEditingCommand command in e.Commands) { if (command.Type == GridBatchEditingCommandType.Update) { Hashtable newValues = command.NewValues; Hashtable oldValues = command.OldValues; string OrderID = newValues["OrderID"].ToString(); string ShipName = newValues["ShipName"].ToString(); } }}Thanks,
Princy
0
Smitha
Top achievements
Rank 1
answered on 05 Mar 2014, 05:15 PM
Hi Princy,
This is my aspx code. I have 2 combobox controls in the 2 columns. And I am not able to get the values entered in those cells and so the database insert fails with the error message that the value is null .
<telerik:RadGrid ID="RadGridPCBA" ClipboardPasteMode="Cells,AllSelectedCells" runat="server" AllowPaging="True" AutoGenerateColumns="False" GridLines="None"
OnBatchEditCommand="RadGridPCBA_BatchEditCommand"
OnItemDeleted="RadGridPCBA_ItemDeleted" OnItemInserted="RadGridPCBA_ItemInserted" OnItemUpdated="RadGridPCBA_ItemUpdated"
OnPreRender="RadGridPCBA_PreRender" PageSize="10" Skin="Default" Width="750px" OnNeedDataSource="GetPCBAData" >
<MasterTableView AutoGenerateColumns="False" CommandItemDisplay="TopAndBottom" EditMode="Batch" HorizontalAlign="NotSet" >
<BatchEditingSettings EditType="Cell" />
<SortExpressions>
<telerik:GridSortExpression FieldName="pcba_ID" SortOrder="Descending" />
</SortExpressions>
<Columns>
<telerik:GridTemplateColumn DataField="Site_ID" HeaderStyle-Width="180px" HeaderText="Site" UniqueName="Site_ID" >
<ItemTemplate>
<%# Eval("Site_Name") %>
</ItemTemplate>
<EditItemTemplate>
<telerik:RadDropDownList ID="SiteNameDropDown" runat="server" DataSourceID="SqlDataSourceSite" DataTextField="Site_Name" DataValueField="Site_ID">
</telerik:RadDropDownList>
</EditItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn DataField="CM_ID" HeaderStyle-Width="180px" HeaderText="CM" UniqueName="CM_ID">
<ItemTemplate>
<%# Eval("CM_Name") %>
</ItemTemplate>
<EditItemTemplate>
<telerik:RadDropDownList ID="CMNameDropDown" runat="server" DataSourceID="SqlDataSourceCM" DataTextField="CM_Name" DataValueField="CM_ID">
</telerik:RadDropDownList>
</EditItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridBoundColumn DataField="pcba_ID" HeaderStyle-Width="210px" HeaderText="ID" SortExpression="pcba_ID" UniqueName="pcba_ID" Visible="false">
</telerik:GridBoundColumn>
<telerik:GridButtonColumn ButtonType="ImageButton" CommandName="Delete" ConfirmDialogType="RadWindow" ConfirmText="Delete this row?" ConfirmTitle="Delete" HeaderStyle-Width="50px" HeaderText="Delete" Text="Delete" UniqueName="DeleteColumn">
</telerik:GridButtonColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
Here is my C# code.
protected void RadGridPCBA_BatchEditCommand(object sender, Telerik.Web.UI.GridBatchEditingEventArgs e)
{
SavedChangesList.Visible = true;
foreach (GridBatchEditingCommand command in e.Commands)
{
// For Update
if ((command.Type == GridBatchEditingCommandType.Insert))
{
Hashtable newValues = command.NewValues;
Hashtable oldValues = command.OldValues;
string ID = newValues["ID"].ToString();
string Name = newValues["Name"].ToString();
// Code to Update to DB
}
}
}
This is my aspx code. I have 2 combobox controls in the 2 columns. And I am not able to get the values entered in those cells and so the database insert fails with the error message that the value is null .
<telerik:RadGrid ID="RadGridPCBA" ClipboardPasteMode="Cells,AllSelectedCells" runat="server" AllowPaging="True" AutoGenerateColumns="False" GridLines="None"
OnBatchEditCommand="RadGridPCBA_BatchEditCommand"
OnItemDeleted="RadGridPCBA_ItemDeleted" OnItemInserted="RadGridPCBA_ItemInserted" OnItemUpdated="RadGridPCBA_ItemUpdated"
OnPreRender="RadGridPCBA_PreRender" PageSize="10" Skin="Default" Width="750px" OnNeedDataSource="GetPCBAData" >
<MasterTableView AutoGenerateColumns="False" CommandItemDisplay="TopAndBottom" EditMode="Batch" HorizontalAlign="NotSet" >
<BatchEditingSettings EditType="Cell" />
<SortExpressions>
<telerik:GridSortExpression FieldName="pcba_ID" SortOrder="Descending" />
</SortExpressions>
<Columns>
<telerik:GridTemplateColumn DataField="Site_ID" HeaderStyle-Width="180px" HeaderText="Site" UniqueName="Site_ID" >
<ItemTemplate>
<%# Eval("Site_Name") %>
</ItemTemplate>
<EditItemTemplate>
<telerik:RadDropDownList ID="SiteNameDropDown" runat="server" DataSourceID="SqlDataSourceSite" DataTextField="Site_Name" DataValueField="Site_ID">
</telerik:RadDropDownList>
</EditItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn DataField="CM_ID" HeaderStyle-Width="180px" HeaderText="CM" UniqueName="CM_ID">
<ItemTemplate>
<%# Eval("CM_Name") %>
</ItemTemplate>
<EditItemTemplate>
<telerik:RadDropDownList ID="CMNameDropDown" runat="server" DataSourceID="SqlDataSourceCM" DataTextField="CM_Name" DataValueField="CM_ID">
</telerik:RadDropDownList>
</EditItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridBoundColumn DataField="pcba_ID" HeaderStyle-Width="210px" HeaderText="ID" SortExpression="pcba_ID" UniqueName="pcba_ID" Visible="false">
</telerik:GridBoundColumn>
<telerik:GridButtonColumn ButtonType="ImageButton" CommandName="Delete" ConfirmDialogType="RadWindow" ConfirmText="Delete this row?" ConfirmTitle="Delete" HeaderStyle-Width="50px" HeaderText="Delete" Text="Delete" UniqueName="DeleteColumn">
</telerik:GridButtonColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
Here is my C# code.
protected void RadGridPCBA_BatchEditCommand(object sender, Telerik.Web.UI.GridBatchEditingEventArgs e)
{
SavedChangesList.Visible = true;
foreach (GridBatchEditingCommand command in e.Commands)
{
// For Update
if ((command.Type == GridBatchEditingCommandType.Insert))
{
Hashtable newValues = command.NewValues;
Hashtable oldValues = command.OldValues;
string ID = newValues["ID"].ToString();
string Name = newValues["Name"].ToString();
// Code to Update to DB
}
}
}
0
Smitha
Top achievements
Rank 1
answered on 05 Mar 2014, 05:37 PM
0
Princy
Top achievements
Rank 2
answered on 06 Mar 2014, 04:08 AM
Hi Smitha,
When using template columns please try the following code snippet.
C#:
Thanks,
Princy
When using template columns please try the following code snippet.
C#:
protected void RadGridPCBA_BatchEditCommand(object sender, GridBatchEditingEventArgs e){ foreach (GridBatchEditingCommand command in e.Commands) { if ((command.Type == GridBatchEditingCommandType.Insert)) { Hashtable newValues = command.NewValues; Hashtable oldValues = command.OldValues; RadDropDownList ddlDesc = RadGridPCBA.FindControl(RadGridPCBA.MasterTableView.ClientID + "_Site_ID").FindControl("SiteNameDropDown") as RadDropDownList; string text = ddlDesc.SelectedText; string id = ddlDesc.SelectedValue; } }}Thanks,
Princy
0
Princy
Top achievements
Rank 2
answered on 06 Mar 2014, 07:18 AM
Hi Smitha,
Your way of accessing is correct. Please take a look at the sample code snippet.The NewValues access the DataField of the column.
ASPX:
C#:
You can disregard the previous post.
Thanks,
Princy
Your way of accessing is correct. Please take a look at the sample code snippet.The NewValues access the DataField of the column.
ASPX:
<telerik:GridTemplateColumn DataField="CM_ID" HeaderText="CM" UniqueName="CM_ID"> <ItemTemplate> <%# Eval("CM_Name") %> </ItemTemplate> <EditItemTemplate> <telerik:RadDropDownList ID="CMNameDropDown" runat="server" DataSourceID="SqlDataSourceCM" DataTextField="CM_Name" DataValueField="CM_ID"> </telerik:RadDropDownList> </EditItemTemplate></telerik:GridTemplateColumn>C#:
if (command.Type == GridBatchEditingCommandType.Insert){ Hashtable newValues = command.NewValues; string CustomerID = newValues["CM_ID"].ToString();}You can disregard the previous post.
Thanks,
Princy
0
Smitha
Top achievements
Rank 1
answered on 06 Mar 2014, 05:23 PM
Hi Princy,
I am still not getting the value of the dropdown selection. I tried both your suggestions
Smitha.
I am still not getting the value of the dropdown selection. I tried both your suggestions
Smitha.
0
Princy
Top achievements
Rank 2
answered on 07 Mar 2014, 06:05 AM
Hi Smitha,
Unfortunately, I'm not able to replicate the issue at my end. Here is the sample code snippet i tried.
ASPX:
C#:
Thanks,
Princy
Unfortunately, I'm not able to replicate the issue at my end. Here is the sample code snippet i tried.
ASPX:
<telerik:RadGrid ID="RadGrid1" runat="server" AllowPaging="false" OnNeedDataSource="RadGrid1_NeedDataSource" OnBatchEditCommand="RadGrid1_BatchEditCommand" AutoGenerateColumns="false"> <MasterTableView EditMode="Batch" CommandItemDisplay="Top" DataKeyNames="OrderID"> <BatchEditingSettings OpenEditingEvent="Click" EditType="Cell" /> <Columns> <telerik:GridBoundColumn UniqueName="OrderID" DataField="OrderID" HeaderText="OrderID" ReadOnly="true" /> <telerik:GridTemplateColumn DataField="EmployeeID" HeaderText="ShipName" UniqueName="ShipName"> <ItemTemplate> <%# Eval("ShipName")%> </ItemTemplate> <EditItemTemplate> <telerik:RadDropDownList ID="RadDropDownList1" runat="server" DataSourceID="SqlDataSource1" DataTextField="ShipName" DataValueField="EmployeeID"> </telerik:RadDropDownList> </EditItemTemplate> </telerik:GridTemplateColumn> </Columns> </MasterTableView> </telerik:RadGrid>C#:
protected void RadGrid1_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e) { RadGrid1.DataSource = GetDataTable("SELECT * FROM Orders"); }protected void RadGrid1_BatchEditCommand(object sender, GridBatchEditingEventArgs e){ foreach (GridBatchEditingCommand command in e.Commands) { if (command.Type == GridBatchEditingCommandType.Insert) { Hashtable newValues = command.NewValues; string ID = newValues["EmployeeID"].ToString(); } }}public DataTable GetDataTable(string query){ String ConnString = ConfigurationManager.ConnectionStrings["Northwind_newConnectionString3"].ConnectionString; SqlConnection conn = new SqlConnection(ConnString); SqlDataAdapter adapter = new SqlDataAdapter(); adapter.SelectCommand = new SqlCommand(query, conn); DataTable myDataTable = new DataTable(); conn.Open(); try { adapter.Fill(myDataTable); } finally { conn.Close(); } return myDataTable; }Thanks,
Princy
0
Peter
Top achievements
Rank 1
answered on 13 Apr 2015, 09:35 AM
If I'm using an EntityDataSource with AutomaticUpdates enabled, how do I *set* a value. As I'm trying to use a Template Column (because I can't work out how to have an empty/null item in a GridDropDownColumn), with an empty item, I need to then need to manually set the value on the Entity. I could use EntityDataSource_Updating, but I don't know what value to use each time.
0
Hi Richard,
I would suggest you to review the forum thread below that discuss similar matter. See the approach provided there and verify if it helps:
http://www.telerik.com/forums/binding-with-entity-framework
Regards,
Maria Ilieva
Telerik
I would suggest you to review the forum thread below that discuss similar matter. See the approach provided there and verify if it helps:
http://www.telerik.com/forums/binding-with-entity-framework
Regards,
Maria Ilieva
Telerik
See What's Next in App Development. Register for TelerikNEXT.
0
Jaya
Top achievements
Rank 1
answered on 22 Apr 2015, 06:20 AM
Hi
Admin
Can you solve this
http://www.telerik.com/forums/how-to-designed-the-aspx-page-and-open-rad-window
0
Dipak
Top achievements
Rank 1
answered on 07 Apr 2017, 05:17 AM
Hi
I'm having the same problem. i bind dropdown with sqldatasource.and the items are showing as my data. but when try to find that dropdown with BatchEditCommand event its says items count 0. i don't understand the problem. please help..
I'm having the same problem. i bind dropdown with sqldatasource.and the items are showing as my data. but when try to find that dropdown with BatchEditCommand event its says items count 0. i don't understand the problem. please help..
0
Prashant
Top achievements
Rank 1
answered on 15 May 2018, 08:29 AM
I create batch edit radgrid programmatically and i have gridtemplatecolumn in which i bind two templates item template and edititemtemplate. In Item template, i attached label that shows selected value of dropdownlist. In edit item template, i attached dropdownlist. when BatchEditcommand event fires, i found no commands in Command list. If removed this dropdown gridtemplate column then i found command list with values at insert.
FYI, I use itemplate to create template server side.Please help