Hi,
Currently i have the items in the grid getting inserted/deleted/updated in the "oninsertcommand/ondeletecommand/onupdatecommand" events.
However, I want to do these grid changes only when the submit button is clicked.
Currently in the grid I have the below UI:
How to achieve Insert/Update/delete in the submit button click?
Currently i have the items in the grid getting inserted/deleted/updated in the "oninsertcommand/ondeletecommand/onupdatecommand" events.
However, I want to do these grid changes only when the submit button is clicked.
Currently in the grid I have the below UI:
OnInsertCommand="radgrid1_InsertCommand" OnUpdateCommand="radgrid1_UpdateCommand" OnDeleteCommand="radgrid1_DeleteCommand"How to achieve Insert/Update/delete in the submit button click?
8 Answers, 1 is accepted
0
Shinu
Top achievements
Rank 2
answered on 14 Jan 2013, 06:54 AM
Hi,
You can use firecommand event as shown below.
C#:
Thanks,
Shinu
You can use firecommand event as shown below.
C#:
protected void Button1_Click(object sender, EventArgs e){ RadGrid grid = (this.FindControl("RadGrid1") as RadGrid); (grid.MasterTableView.GetItems(GridItemType.CommandItem)[0] as GridCommandItem).FireCommandEvent(RadGrid.PerformInsertCommandName, string.Empty); (grid.MasterTableView.GetItems(GridItemType.EditItem)[0] as GridEditableItem).FireCommandEvent(RadGrid.UpdateCommandName, string.Empty);}Thanks,
Shinu
0
Venkatesh
Top achievements
Rank 1
answered on 14 Jan 2013, 06:56 AM
H,
Thanks for the reply.
How to know that its insert or update in the submit button?
Also, is there a fire commanad for the delete operation also?
Thanks for the reply.
How to know that its insert or update in the submit button?
Also, is there a fire commanad for the delete operation also?
0
Shinu
Top achievements
Rank 2
answered on 15 Jan 2013, 10:15 AM
Hi,
Please check the following code snippet to distinguish insert and update.
C#:
Thanks,
Shinu.
Please check the following code snippet to distinguish insert and update.
C#:
protected void Button1_Click(object sender, EventArgs e){ RadGrid grid = (this.FindControl("RadGrid1") as RadGrid); if (grid.MasterTableView.IsItemInserted) { (grid.MasterTableView.GetItems(GridItemType.CommandItem)[0] as GridCommandItem).FireCommandEvent(RadGrid.PerformInsertCommandName, string.Empty); } else if (grid.EditItems.Count > 0) { grid.EditItems[0].FireCommandEvent(RadGrid.UpdateCommandName, string.Empty); } else if(your condition for deletion) { (grid.MasterTableView.GetItems(GridItemType.Item)[0] as GridDataItem).FireCommandEvent(RadGrid.DeleteCommandName, string.Empty); }}Thanks,
Shinu.
0
Venkatesh
Top achievements
Rank 1
answered on 15 Jan 2013, 10:19 AM
Hi.
Thank you very much for the reply.
How should the radgrid UI be?
Thanks
Thank you very much for the reply.
How should the radgrid UI be?
Thanks
0
Shinu
Top achievements
Rank 2
answered on 16 Jan 2013, 05:02 AM
Hi Venkatesh,
Please take a look into the sample code snippet I tried.
ASPX:
C#:
Thanks,
Shinu.
Please take a look into the sample code snippet I tried.
ASPX:
<telerik:RadGrid ID="RadGrid1" runat="server" DataSourceID="SqlDataSource1" AutoGenerateColumns="false" OnItemCreated="RadGrid1_ItemCreated"> <MasterTableView CommandItemDisplay="Top" EditMode="InPlace"> <Columns> <telerik:GridBoundColumn DataField="OrderID" HeaderText="OrderID" UniqueName="OrderID"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="ShipName" HeaderText="ShipName" UniqueName="ShipName"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="ShipCity" HeaderText="ShipCity" UniqueName="ShipCity"> </telerik:GridBoundColumn> <telerik:GridTemplateColumn> <ItemTemplate> <asp:Label ID="Label1" runat="server" Text='<%#Eval("CustomerID") %>'></asp:Label> </ItemTemplate> <EditItemTemplate> <asp:TextBox ID="TextBox1" runat="server" Text='<%#Eval("CustomerID") %>'></asp:TextBox> </EditItemTemplate> </telerik:GridTemplateColumn> <telerik:GridEditCommandColumn ButtonType="ImageButton"> </telerik:GridEditCommandColumn> <telerik:GridClientDeleteColumn ButtonType="ImageButton"> </telerik:GridClientDeleteColumn> </Columns> </MasterTableView></telerik:RadGrid>C#:
protected void RadGrid1_ItemCreated(object sender, Telerik.Web.UI.GridItemEventArgs e){ if (e.Item is GridEditableItem && e.Item.IsInEditMode) { if (!e.Item.OwnerTableView.IsItemInserted) { ImageButton updateButton = (ImageButton)e.Item.FindControl("UpdateButton"); updateButton.Visible = false; } else { ImageButton insertButton = (ImageButton)e.Item.FindControl("PerformInsertButton"); insertButton.Visible = false; } ImageButton cancelButton = (ImageButton)e.Item.FindControl("CancelButton"); cancelButton.Visible=false; }}protected void Button1_Click(object sender, EventArgs e){ RadGrid grid = (this.FindControl("RadGrid1") as RadGrid); if (grid.MasterTableView.IsItemInserted) { (grid.MasterTableView.GetItems(GridItemType.CommandItem)[0] as GridCommandItem).FireCommandEvent(RadGrid.PerformInsertCommandName, string.Empty); } else if (grid.EditItems.Count > 0) { grid.EditItems[0].FireCommandEvent(RadGrid.UpdateCommandName, string.Empty); } else { (grid.MasterTableView.GetItems(GridItemType.Item)[0] as GridDataItem).FireCommandEvent(RadGrid.DeleteCommandName, string.Empty); }}Thanks,
Shinu.
0
Venkatesh
Top achievements
Rank 1
answered on 16 Jan 2013, 06:56 AM
HI Shinu,
Thank you very much for the reply. Your code is almost working.
I have modified the code according to my scenario.
1) Initially I want 5 rows to be in Insert mode. How to achieve that?
2) In the Button click, how to retrieve the values?
3) when user clicks "Add New Item" button, i want to create a only one row in which user can insert data. Currently i am getting 5 blank rows which does not show any textbox.
Thanks
Thank you very much for the reply. Your code is almost working.
I have modified the code according to my scenario.
<telerik:RadGrid ID="RadGrid1" runat="server" ShowStatusBar="True" EnableViewState="true" ShowFooter="True" OnDeleteCommand="RadGrid1_DeleteCommand" OnNeedDataSource="RadGrid1_NeedDataSource" CellSpacing="0" GridLines="None" OnItemCreated="RadGrid1_ItemCreated"> <MasterTableView DataKeyNames="ProductNumber" ShowHeadersWhenNoRecords="true" CommandItemDisplay="Bottom" EnableNoRecordsTemplate="false" AutoGenerateColumns="false" EditMode="InPlace" CommandItemSettings-ShowRefreshButton="false"> <CommandItemTemplate> <asp:Button ID="btnAddItem" Text="Add New Item" runat="server" CommandName="InitInsert"> </asp:Button> </CommandItemTemplate> <Columns> <telerik:GridTemplateColumn UniqueName="ProductNumber" HeaderText="Product Number" DataField="ProductNumber"> <EditItemTemplate> <asp:TextBox ID="txtProductNumber" runat="server" ></asp:TextBox> </EditItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn UniqueName="OrderQuantity" HeaderText="Order Quantity" DataField="OrderQuantity"> <EditItemTemplate> <telerik:RadNumericTextBox ID="txtOrderQuantity" runat="server" > </telerik:RadNumericTextBox> </EditItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn UniqueName="UnitPrice" HeaderText="Unit Price" DataField="UnitPrice"> <EditItemTemplate> <telerik:RadNumericTextBox ID="txtUnitPrice" runat="server" > </telerik:RadNumericTextBox> </EditItemTemplate> </telerik:GridTemplateColumn> <telerik:GridCalculatedColumn DataFormatString="{0:C}" DataType="System.Double" HeaderText="Extended Price" UniqueName="PORFExtendedPrice" DataFields="OrderQuantity,UnitPrice" Expression="{0}*{1}" Aggregate="Sum" Visible="true"> </telerik:GridCalculatedColumn> <telerik:GridEditCommandColumn ButtonType="ImageButton"> </telerik:GridEditCommandColumn> <telerik:GridClientDeleteColumn ButtonType="ImageButton"> </telerik:GridClientDeleteColumn> </Columns> </MasterTableView> <ClientSettings EnableRowHoverStyle="true"> </ClientSettings> </telerik:RadGrid> <div> </div> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />public DataTable OrderGridData { get { if (ViewState["OrderGridData"] != null) { return (DataTable)ViewState["OrderGridData"]; } else { return CreateEmptyTable(); } } set { ViewState["OrderGridData"] = value; } } protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { bindGrid(); } } private DataTable CreateEmptyTable() { DataTable dt = new DataTable("GridOrderData"); try { dt.Columns.Add(new DataColumn("ProductNumber")); dt.Columns.Add(new DataColumn("OrderQuantity")); dt.Columns.Add(new DataColumn("UnitPrice")); dt.Columns.Add(new DataColumn("ExtendedPrice")); dt.Columns.Add(new DataColumn("Flag")); dt.Columns["OrderQuantity"].DataType = typeof(double); dt.Columns["UnitPrice"].DataType = typeof(double); } catch (Exception) { throw; } return dt; } private void bindGrid() { DataTable ds = new DataTable(); RadGrid1.DataSource = addBlankLines(ds, 5); RadGrid1.DataBind(); } protected void RadGrid1_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e) { DataTable ds = new DataTable(); RadGrid1.DataSource = addBlankLines(ds, 5); } protected void Button1_Click(object sender, EventArgs e) { RadGrid grid = (this.FindControl("RadGrid1") as RadGrid); if(grid.MasterTableView.IsItemInserted) { (grid.MasterTableView.GetItems(GridItemType.CommandItem)[0] as GridCommandItem).FireCommandEvent(RadGrid.PerformInsertCommandName, string.Empty); } else if(grid.EditItems.Count > 0) { grid.EditItems[0].FireCommandEvent(RadGrid.UpdateCommandName, string.Empty); } else { (grid.MasterTableView.GetItems(GridItemType.Item)[0] as GridDataItem).FireCommandEvent(RadGrid.DeleteCommandName, string.Empty); } } protected void RadGrid1_ItemCreated(object sender, Telerik.Web.UI.GridItemEventArgs e) { if (e.Item is GridEditableItem && e.Item.IsInEditMode) { if (!e.Item.OwnerTableView.IsItemInserted) { ImageButton updateButton = (ImageButton)e.Item.FindControl("UpdateButton"); updateButton.Visible = false; } else { ImageButton insertButton = (ImageButton)e.Item.FindControl("PerformInsertButton"); insertButton.Visible = false; } ImageButton cancelButton = (ImageButton)e.Item.FindControl("CancelButton"); cancelButton.Visible = false; } } private DataTable addBlankLines(DataTable ds, int num) { ds = this.OrderGridData; if (num != 0) { DataRow drBlank = default(DataRow); for (int i = 0; i < num; i++) { drBlank = ds.NewRow(); ds.Rows.Add(drBlank); } int j; for (j = 0; j < ds.Rows.Count; j++) { ds.Rows[j]["Flag"] = "exist"; } } this.OrderGridData = ds; return ds; }1) Initially I want 5 rows to be in Insert mode. How to achieve that?
2) In the Button click, how to retrieve the values?
3) when user clicks "Add New Item" button, i want to create a only one row in which user can insert data. Currently i am getting 5 blank rows which does not show any textbox.
Thanks
0
Caio
Top achievements
Rank 1
answered on 31 Jul 2013, 01:38 PM
Dear Shinu,
In my case I have a grid set to
The procedure below doesn't work.
How then would i call the PerfomInsertCommand Name event from a button external to the radgrid?
In my case I have a grid set to
CommandItemDisplay="None"
The procedure below doesn't work.
(grid.MasterTableView.GetItems(GridItemType.CommandItem)[0] as GridCommandItem).FireCommandEvent(RadGrid.PerformInsertCommandName, string.Empty);How then would i call the PerfomInsertCommand Name event from a button external to the radgrid?
0
Caio
Top achievements
Rank 1
answered on 31 Jul 2013, 06:47 PM
I found this it worked for me.
GridDataInsertItem insertItem = (GridDataInsertItem)GridLinhaDeTransporte.MasterTableView.GetInsertItem(); // accessing grid insert item
insertItem.FireCommandEvent("PerformInsert", string.Empty);
GridDataInsertItem insertItem = (GridDataInsertItem)GridLinhaDeTransporte.MasterTableView.GetInsertItem(); // accessing grid insert item
insertItem.FireCommandEvent("PerformInsert", string.Empty);