Hi,
I am trying to access a control in InsertItemTemplate.
On EditTemplate is fine, I use:
var Ctlcst_costru_civmec_note = (RadTextBox)CtlCstCostruzione.EditItems[0].FindControl("Ctlcst_costru_civmec_note");
But I am not able to find the same control on insert one. How can I do?
Thx,
Valerio
3 Answers, 1 is accepted
The best place to do that is the ItemDataBound event as shown in the following article: https://docs.telerik.com/devtools/aspnet-ajax/controls/grid/rows/accessing-cells-and-rows#accessing-controls-in-editinsert-mode
That said, if you need to run some code outside of the grid, you can use the GetInsertItem method of the table view. For example:
protected void btn1_Click(object sender, EventArgs e){ if (rg1.MasterTableView.IsItemInserted) { GridEditableItem item = rg1.MasterTableView.GetInsertItem(); if (item != null) { RadTextBox rtb = item.FindControl("rtbInTemplate") as RadTextBox; if (rtb != null) { rtb.Text = DateTime.Now.ToString(); } } }}with markup like this (the control ID is there, nothing else significant):
<asp:Button Text="get the textbox" ID="btn1" OnClick="btn1_Click" runat="server" /><telerik:RadGrid runat="server" ID="rg1" OnNeedDataSource="rg1_NeedDataSource" AllowPaging="true"> <MasterTableView CommandItemDisplay="Top"> <Columns> <telerik:GridTemplateColumn> <InsertItemTemplate> <telerik:RadTextBox runat="server" ID="rtbInTemplate"></telerik:RadTextBox> </InsertItemTemplate> </telerik:GridTemplateColumn> </Columns> </MasterTableView></telerik:RadGrid>and a little bit of dummy data to get it running:
protected void rg1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e){ (sender as RadGrid).DataSource = Enumerable.Range(1, 300).Select(o => new { ID = o, someName = "name " + o });}Regards,
Marin Bratanov
Progress Telerik
Hi Marin,
it works on RadGrid, but how do I manage for a RadListView?
I am not able to figure it out.
Thx for help,
Valerio
Generally, for a listview the same approach about using its events applies: https://docs.telerik.com/devtools/aspnet-ajax/controls/listview/templates/accessing-controls#accessing-controls-in-the-edititemtemplateinsertitemtemplate
When using an external button, instead of a method, there is the .InsertItem property:
protected void btn1_Click(object sender, EventArgs e){ if(RadListView1.InsertItem != null) { TextBox tb = RadListView1.InsertItem.FindControl("TextBox11") as TextBox; if(tb != null) { tb.Text = DateTime.Now.ToString(); } }}where this can run on the following simplified version of our online demo for automatic CRUD operations:
<asp:Button Text="get insert item textbox" ID="btn1" OnClick="btn1_Click" runat="server" /><telerik:RadListView ID="RadListView1" RenderMode="Lightweight" DataSourceID="SqlDataSource1" runat="server" ItemPlaceholderID="ProductItemContainer" DataKeyNames="ProductID" AllowPaging="True"> <ItemTemplate> <fieldset class="itemFieldset"> <%# Eval("ProductName") %> </fieldset> </ItemTemplate> <EditItemTemplate> <fieldset class="itemFieldset"> <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("ProductName") %>'></asp:TextBox> </fieldset> </EditItemTemplate> <InsertItemTemplate> <fieldset class="itemFieldset"> <asp:TextBox ID="TextBox11" runat="server" Text='<%# Bind("ProductName") %>'></asp:TextBox> </fieldset> </InsertItemTemplate> <LayoutTemplate> <fieldset /> <legend>RadListView bound to SqlDataSource</legend> <table class="layoutTable"> <tr> <td class="button"> <telerik:RadButton RenderMode="Lightweight" ID="Button1" runat="server" CommandName="InitInsert" Visible="<%# !Container.IsItemInserted %>" Text="Add new product"> </telerik:RadButton> </td> </tr> <tr> <td> <asp:Panel ID="ProductItemContainer" runat="server"> </asp:Panel> </td> </tr> <tr> <td> <telerik:RadDataPager RenderMode="Lightweight" ID="RadDataPager1" runat="server" PagedControlID="RadListView1" PageSize="3"> <Fields> <telerik:RadDataPagerButtonField FieldType="FirstPrev"></telerik:RadDataPagerButtonField> <telerik:RadDataPagerButtonField FieldType="Numeric"></telerik:RadDataPagerButtonField> <telerik:RadDataPagerButtonField FieldType="NextLast"></telerik:RadDataPagerButtonField> </Fields> </telerik:RadDataPager> </td> </tr> </table> </fieldset> </LayoutTemplate></telerik:RadListView><asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" DeleteCommand="DELETE FROM [Products] WHERE [ProductID] = @ProductID" InsertCommand="INSERT INTO [Products] ([ProductName], [SupplierID], [CategoryID], [QuantityPerUnit], [UnitPrice], [UnitsInStock], [UnitsOnOrder], [ReorderLevel], [Discontinued]) VALUES (@ProductName, @SupplierID, @CategoryID, @QuantityPerUnit, @UnitPrice, @UnitsInStock, @UnitsOnOrder, @ReorderLevel, @Discontinued)" SelectCommand="SELECT * FROM [Products]" UpdateCommand="UPDATE [Products] SET [ProductName] = @ProductName, [SupplierID] = @SupplierID, [CategoryID] = @CategoryID, [QuantityPerUnit] = @QuantityPerUnit, [UnitPrice] = @UnitPrice, [UnitsInStock] = @UnitsInStock, [UnitsOnOrder] = @UnitsOnOrder, [ReorderLevel] = @ReorderLevel, [Discontinued] = @Discontinued WHERE [ProductID] = @ProductID"> <DeleteParameters> <asp:Parameter Name="ProductID" Type="Int32"></asp:Parameter> </DeleteParameters> <UpdateParameters> <asp:Parameter Name="ProductName" Type="String"></asp:Parameter> <asp:Parameter Name="SupplierID" Type="Int32"></asp:Parameter> <asp:Parameter Name="CategoryID" Type="Int32"></asp:Parameter> <asp:Parameter Name="QuantityPerUnit" Type="String"></asp:Parameter> <asp:Parameter Name="UnitPrice" Type="Decimal"></asp:Parameter> <asp:Parameter Name="UnitsInStock" Type="Int16"></asp:Parameter> <asp:Parameter Name="UnitsOnOrder" Type="Int16"></asp:Parameter> <asp:Parameter Name="ReorderLevel" Type="Int16"></asp:Parameter> <asp:Parameter Name="Discontinued" Type="Boolean"></asp:Parameter> <asp:Parameter Name="ProductID" Type="Int32"></asp:Parameter> </UpdateParameters> <InsertParameters> <asp:Parameter Name="ProductName" Type="String"></asp:Parameter> <asp:Parameter Name="SupplierID" Type="Int32"></asp:Parameter> <asp:Parameter Name="CategoryID" Type="Int32"></asp:Parameter> <asp:Parameter Name="QuantityPerUnit" Type="String"></asp:Parameter> <asp:Parameter Name="UnitPrice" Type="Decimal"></asp:Parameter> <asp:Parameter Name="UnitsInStock" Type="Int16"></asp:Parameter> <asp:Parameter Name="UnitsOnOrder" Type="Int16"></asp:Parameter> <asp:Parameter Name="ReorderLevel" Type="Int16"></asp:Parameter> <asp:Parameter Name="Discontinued" Type="Boolean"></asp:Parameter> </InsertParameters></asp:SqlDataSource>Regards,
Marin