Radgrid inside Radgrid MasterTableViewEditForm

15 posts, 0 answers
  1. Soumya
    Soumya avatar
    12 posts
    Member since:
    Feb 2012

    Posted 29 Mar 2012 Link to this post

    Hello,
            
             I am using telerik rad grid. I want to have one more radgrid inside Radgrid MAstertableview edit form.

    Inside grid is having Boundcolumn,Templatecolumn containing label as item template and combobox as edit item template.
    Now how to do add, edit delete operation to inside radgrid.
    I searched lot of articles. But didnt find example like this scenario.
    Please help me.



    Regards,
    Soumya,
    Bangalore.


  2. Princy
    Princy avatar
    17421 posts
    Member since:
    Mar 2007

    Posted 29 Mar 2012 Link to this post

    Hello Soumya,

    I have prepared a sample code based on your requirement. You can use FormTemplate for the purpose. And in this example I am accesssing controls inside edit form in UpdateCommand and can update from code. You can apply the same logic for insert and delete operations.
    aspx:
    <telerik:RadGrid ID="grid1" AutoGenerateColumns="false" runat="server" DataSourceID="SqlDataSource1">
      <MasterTableView>
        <Columns>
           <telerik:GridEditCommandColumn>
           </telerik:GridEditCommandColumn>
        </Columns>
        <EditFormSettings EditFormType="Template">
           <FormTemplate>
             <telerik:RadGrid runat="server" ID="grid2" AutoGenerateEditColumn="true" DataSourceID="SqlDataSource1" AutoGenerateColumns="false" OnUpdateCommand="grid2_UpdateCommand">
                <MasterTableView>
                  <Columns>
                     <telerik:GridBoundColumn DataField="EmployeeID" UniqueName="EmployeeID"></telerik:GridBoundColumn>
                  </Columns>
               </MasterTableView>
             </telerik:RadGrid>
          </FormTemplate>
       </EditFormSettings>
     </MasterTableView>
    </telerik:RadGrid>
    C#:
    protected void grid2_UpdateCommand(object sender, Telerik.Web.UI.GridCommandEventArgs e)
    {
     GridEditableItem item = (GridEditableItem)e.Item;
     TextBox txt = (TextBox)item["EmployeeID"].Controls[0];// accessing values
     // your code to Update
    }
    Hope this helps. Please elaborate your scenario if it doesn't help.

    Thanks,
    Princy.
  3. UI for ASP.NET Ajax is Ready for VS 2017
  4. Soumya
    Soumya avatar
    12 posts
    Member since:
    Feb 2012

    Posted 29 Mar 2012 Link to this post

    Hi,
        Thanks for replying.
         This is the source code of radgrid which  am using inside Mastertablevieweditform.But i want to perform add, Edit and delete operation to that grid. Please help me. Am very newer to telrik controls.
    I set mastertableview property to  (EditMode="inplace" CommandItemDisplay="Top").


    <telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="False"

    CellSpacing="0" GridLines="None"

    >

    <ClientSettings>

    <Selecting CellSelectionMode="None" />

    </ClientSettings>

    <MasterTableView EditMode="inplace" CommandItemDisplay="Top">

    <CommandItemSettings ExportToPdfText="Export to PDF" />

    <RowIndicatorColumn FilterControlAltText="Filter RowIndicator column"

    Visible="True">

    <HeaderStyle Width="20px" />

    </RowIndicatorColumn>

    <ExpandCollapseColumn FilterControlAltText="Filter ExpandColumn column"

    Visible="True">

    <HeaderStyle Width="20px" />

    </ExpandCollapseColumn>

    <Columns>

    <telerik:GridBoundColumn UniqueName="EmpName" ReadOnly="True" HeaderText="ContactName"

    DataField="EmpName" FilterControlAltText="Filter EmpName column" />

    <telerik:GridTemplateColumn UniqueName="TemplateColumn" HeaderText="Country">

    <EditItemTemplate>

    <telerik:RadComboBox ID="RadComboBox1" Runat="server" Height="22px"

    onselectedindexchanged="RadComboBox1_SelectedIndexChanged" Width="154px">

    </telerik:RadComboBox>

    </EditItemTemplate>

    <ItemTemplate>

    <asp:Label ID="Label1" runat="server" Text='<%# Bind("EmpCity") %>'>

    </asp:Label>

    </ItemTemplate>

    </telerik:GridTemplateColumn>

    <telerik:GridEditCommandColumn FilterControlAltText="Filter EditCommandColumn column"

    HeaderText="Edit">

    </telerik:GridEditCommandColumn>

    </Columns>

    <EditFormSettings>

    <EditColumn FilterControlAltText="Filter EditCommandColumn column">

    </EditColumn>

    </EditFormSettings>

    </MasterTableView>

    <FilterMenu EnableImageSprites="False">

    </FilterMenu>

    </telerik:RadGrid>

  5. Princy
    Princy avatar
    17421 posts
    Member since:
    Mar 2007

    Posted 30 Mar 2012 Link to this post

    Hello Soumya,

    You can perform insert,update operations manuaaly using the following code.
    C#:
    public static string connection = WebConfigurationManager.ConnectionStrings["NorthwindConnectionString3"].ConnectionString;
        SqlConnection conn = new SqlConnection(connection);
        public SqlCommand SqlCommand = new SqlCommand();
        protected void Page_Load(object sender, EventArgs e)
        {
     
        }
        protected void RadGrid1_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
        {
            string selectQuery = "select * from Orders";
            SqlDataAdapter adapter = new SqlDataAdapter(selectQuery,conn);
            DataTable dt = new DataTable();
            conn.Open();
            adapter.Fill(dt);
            conn.Close();
            RadGrid1.DataSource = dt;
        }
     
        protected void RadGrid1_UpdateCommand(object sender, GridCommandEventArgs e)
        {
            conn.Open();
            GridEditableItem editItem = (GridEditableItem)e.Item;
            string name= editItem.OwnerTableView.DataKeyValues[editItem.ItemIndex]["EmpName"].ToString();
            stringname = (editItem["EmpName"].Controls[0] as TextBox).Text;
           string updateQuery = "Update Orders set EmployeeID='" + EmployeeID + "' where name='" + EmpName + "'";
            SqlCommand.CommandText = updateQuery;
            SqlCommand.Connection = conn;
            SqlCommand.ExecuteNonQuery();
            conn.Close();
     
       }
        protected void RadGrid1_DeleteCommand(object sender, GridCommandEventArgs e)
        {
     
            conn.Open();
            GridDataItem editItem = (GridDataItem)e.Item;
            string name= editItem.OwnerTableView.DataKeyValues[editItem.ItemIndex]["EmpName"].ToString();
            string delQuery="delete from orders where EmpName='"+name+"'";
            SqlCommand.CommandText = delQuery;
            SqlCommand.Connection = conn;
            SqlCommand.ExecuteNonQuery();
            conn.Close();
        }
        protected void RadGrid1_InsertCommand(object sender, GridCommandEventArgs e)
        {
            conn.Open();
            GridEditableItem editItem = (GridEditableItem)e.Item;
           string name = (editItem["EmpName"].Controls[0] as TextBox).Text;
            string insertQuery = "insert into Orders (EmpName) values ('" +name+ "')";
            SqlCommand.CommandText = insertQuery;
            SqlCommand.Connection = conn;
            SqlCommand.ExecuteNonQuery();
            conn.Close();
     
        }
    }
    Also you can perform these operations declaratively. Check the following demo which explains the same.
    Grid / Automatic Operations

    Thanks,
    Princy.
  6. Soumya
    Soumya avatar
    12 posts
    Member since:
    Feb 2012

    Posted 30 Mar 2012 Link to this post

    Hi ,
        I resolved this problem.
    Now one more  question i want ask is,
    In my grid column  am using label as ItemTemplate and Combobox as EditItemTemplate like below.  


    <telerik:GridTemplateColumn FilterControlAltText="Filter TemplateColumn column"

    HeaderText="District" UniqueName="TemplateColumn">

    <EditItemTemplate>

    <telerik:RadComboBox ID="cmbDistrict" Runat="server"

    AutoPostBack="True" Width="114px"

    onselectedindexchanged="cmbDistrict_SelectedIndexChanged"

    DataTextField="DistrictName" DataValueField="DistrictId">

    </telerik:RadComboBox>

    </EditItemTemplate>

    <ItemTemplate>

    <asp:Label ID="lblDistrict" runat="server" Text='<%# Bind("DistrictName") %>'></asp:Label>

    </ItemTemplate>

    <HeaderStyle HorizontalAlign="Left" />

    <ItemStyle HorizontalAlign="Left" />

    </telerik:GridTemplateColumn>



    Here in Edit click am binding combobox from server side using ItemDataBound.
    After binding want to select LabelValue as selected value in combobox.
    But problem is not able to find ItemTemplate Label in edit mode.
    How  can i do this?
    Please help me.



    Thanks & Regards,
    Soumya,
    Bangalore



  7. Princy
    Princy avatar
    17421 posts
    Member since:
    Mar 2007

    Posted 30 Mar 2012 Link to this post

    Hello Soumya,

    Try the following code snippet to access the label in ItemDataBound event.
    C#:
    void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
    {
     if (e.Item is GridEditableItem)
     {
       GridEditableItem item = (GridEditableItem)e.Item ;
       Label lbl = (Label)item.FindControl("lblDistrict") ;
     }
    }

    Thanks,
    Princy.
  8. Soumya
    Soumya avatar
    12 posts
    Member since:
    Feb 2012

    Posted 03 Apr 2012 Link to this post

    Hi,
        I tried with this. but it didnt take value in run mode.
    Later i used bound column  and disabled it in run mode.

    while editing also instead of showing value from label to combobox, i took it from bound column.

     GridEditableItem item = (GridEditableItem)e.Item;
     TextBox strDistrictId = (TextBox)item["DistrictId"].Controls[0];

    Now its working fine.



    Thanks & Regards,
    Soumya,
    Bangalore.
  9. MV
    MV avatar
    21 posts
    Member since:
    Dec 2015

    Posted 31 Dec 2015 Link to this post

    Hello,

     

    I have a Radgrid inside Radgrid MasterTableViewEditForm and I'm trying

    to display information based on the selected value of radgrid2 (the inside grid) right next to it.

    I tried a lot of the demos but I can't get it to work, please help me. Here's what I have...

     

     

     

    <EditFormSettings EditFormType="Template">                  
                       <FormTemplate>
                         <telerik:RadTabStrip ID="Contacts" runat="server" SelectedIndex="0" MultiPageID="UserMultiPage1" >
                           <Tabs>
                              
                               <telerik:RadTab runat="server" Text="Applications" PageViewID="AddressInfoPageView">
                               </telerik:RadTab>
                           
                           </Tabs>
                       </telerik:RadTabStrip>
                       <telerik:RadMultiPage runat="server" ID="UserMultiPage1" SelectedIndex="0" RenderSelectedPageOnly="false">
                            
                            
                            
                           <telerik:RadPageView runat="server" ID="AddressInfoPageView">
     
                           <asp:Label ID="Label3" Font-Bold="true" Font-Italic="true" Text='<%# Eval("clientID")%>'
                                   Visible="false" runat="server" />
     
                                 
     
                              <div style="display:inline-block">
     
                    
                           <telerik:RadGrid ID="RadGrid2" runat="server" AutoGenerateColumns="false" DataSourceID="SqlDataSource2"
                                           CssClass="RadGrid" GridLines="None"
                                           AllowPaging="False"  AllowSorting="True"
                                           ShowStatusBar="true" AllowAutomaticDeletes="True"
                                            AllowAutomaticInserts="True" height="320px" Width="300px" >
                           <ClientSettings>
                               <ClientEvents OnRowSelected="RowSelected" />
                               <Selecting AllowRowSelect="true"></Selecting>
                               <Scrolling AllowScroll="True"  UseStaticHeaders="True"  SaveScrollPosition="true" ></Scrolling>
                           </ClientSettings>
                           <MasterTableView CommandItemDisplay="Top" CommandItemSettings-AddNewRecordText="Add New Client" GridLines="None" DataSourceID="SqlDataSource2" DataKeyNames="clientID">
                               <Columns>                              
                                   <telerik:GridButtonColumn CommandName="Edit" Text="Edit">
                                   </telerik:GridButtonColumn>                          
                                   <telerik:GridBoundColumn DataField="app" UniqueName="app" HeaderText="Application No.">
                                   </telerik:GridBoundColumn>             
                                   <telerik:GridBoundColumn DataField="clientTypeName" UniqueName="type" HeaderText="Relationship">
                                   </telerik:GridBoundColumn>                  
                               </Columns>
                               
                               <EditFormSettings EditFormType="Template">                  
                                   <FormTemplate>
                                        <asp:TextBox ID="TextBox10" runat="server" Text='<%# Bind("app")%>' TabIndex="1" Enabled="false"/>
                                  </FormTemplate>
                               </EditformSettings>
                           </MasterTableView>                                
                       </telerik:RadGrid>                           
                       </div>
                        
                       
           
                       <asp:SqlDataSource ID="SqlDataSource2" runat="server"
                                   ConnectionString="Data Source=10.131.121.240;Integrated Security=false;Initial Catalog=Contacts_Dev; User ID=TestUser;Password=100.1kthx" providerName="System.Data.SqlClient"
                                   DeleteCommand="DELETE FROM [Contacts_Dev].[dbo].[Contact_apps] WHERE [clientID] = @clientID"
                                   InsertCommand="INSERT INTO [Contacts_Dev].[dbo].[Contact_apps] ([app], [clientType], [AutoID],) VALUES (@clientID, @app, @clientType, @AutoID)"
                                   SelectCommand="SELECT * FROM [Contacts_Dev].[dbo].[Contact_apps] as a, [Contacts_Dev].[dbo].[Contacts_Type_LUT] as b  WHERE a.[clientID] = @clientID AND a.[clientType] = b.[clientType]"
                                   UpdateCommand="UPDATE [Contacts_Dev].[dbo].[Contact_apps] SET [clientID] = @clientID, [clientType] = @clientType, [AutoID] = @AutoID WHERE [clientID] = @clientID">
                                   <SelectParameters>
                                       <asp:ControlParameter Name="clientID" Type="String" ControlID="Label3" PropertyName="Text" />                           
                                   </SelectParameters>
                                   <DeleteParameters>
                                       <asp:Parameter Name="clientID" Type="Int32"></asp:Parameter>
                                   </DeleteParameters>
                                   <InsertParameters>
                                       <asp:Parameter Name="app" Type="String"></asp:Parameter>
                                       <asp:Parameter Name="clientType" Type="String"></asp:Parameter>
                                       <asp:Parameter Name="AutoID" Type="Int32"></asp:Parameter>
                                       <asp:Parameter Name="clientID" Type="Int32"></asp:Parameter>        
                                   </InsertParameters>
                                   <UpdateParameters>
                                       <asp:Parameter Name="app" Type="String"></asp:Parameter>
                                       <asp:Parameter Name="clientType" Type="String"></asp:Parameter>
                                       <asp:Parameter Name="AutoID" Type="Int32"></asp:Parameter>
                                       <asp:Parameter Name="clientID" Type="Int32"></asp:Parameter>
                                   </UpdateParameters>
                       </asp:SqlDataSource>
     
                               
                
                               <div style="display:inline-block">
                           <table id="Table4" style="width:100px; height:500px; display:inline">
                               <tr >
                                   <td colspan="2">
                                       <b>Details I would like to display would go here, details based on Application No. Selected</b>
                                   
                                   </td>
                               </tr>
      
                                
                           </table>
                            
                          </div>    
     
                       </telerik:RadPageView>
  10. Kostadin
    Admin
    Kostadin avatar
    1711 posts

    Posted 05 Jan Link to this post

    Hello,

    A possible solution is to get the DataKeyValue on the client and based on it to display the information by using a client code. Generally from OnRowSelected event arguments you can access the dataKeyValues method and get the need information. Keep in mind you need to set the data field which you want to access to ClientDataKeyNames property of the grid. 

    Regards,
    Kostadin
    Telerik
    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Feedback Portal and vote to affect the priority of the items
  11. MV
    MV avatar
    21 posts
    Member since:
    Dec 2015

    Posted 08 Jan in reply to Kostadin Link to this post

    Thank you!!!! that worked.

    Now, I'm trying to delete/insert rows in radgrid2 using sqldatasource and in doesn't work...

  12. Kostadin
    Admin
    Kostadin avatar
    1711 posts

    Posted 13 Jan Link to this post

    Hi,

    I examined the provided code and as far as I can see you have configure it correctly. Could you please let me know whether you have receive some client or server exception? Also can you please check whether the grid CRUD operations work when you move the grid outside the edit form?

    Regards,
    Kostadin
    Telerik
    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Feedback Portal and vote to affect the priority of the items
  13. MV
    MV avatar
    21 posts
    Member since:
    Dec 2015

    Posted 22 Jan in reply to Kostadin Link to this post

    I was able to figure it out. I have a hard time finding RadGrid2 from code behind, so I've been using javascript.

    Now, I'm trying to programmatically select a row in RadGrid2 based on the value of a textbox. I thought about passing the value of the textbox to the filter, but no luck. I tried setting the filter's default value; but it looks like it can only be accomplished on code behind; Like I said, I've had no luck accessing RadGrid2 on code behind. Any advice will be greatly appreciated.

  14. MV
    MV avatar
    21 posts
    Member since:
    Dec 2015

    Posted 22 Jan in reply to MV Link to this post

    I forgot to mention that the textbox is outside of RadGrid1 and I also use that textbox to display information on RadGrid1 on button click.

     

    Thanks!

  15. Kostadin
    Admin
    Kostadin avatar
    1711 posts

    Posted 27 Jan Link to this post

    Hello,

    In order to select the items of the grid on the server you can hook OnItemDataBound event handler and set selected property to true to each row that need to be selected. Please check out the following code snippet.
    protected void RadGrid2_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e)
    {
        if (e.Item is GridDataItem)
        {
            GridDataItem item = e.Item as GridDataItem;
            if (shouldSelect)
            {
                item.Selected = true;
            }
        }
    }

    Regards,
    Kostadin
    Telerik
    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Feedback Portal and vote to affect the priority of the items
  16. MV
    MV avatar
    21 posts
    Member since:
    Dec 2015

    Posted 02 Feb in reply to Kostadin Link to this post

    Awesome, Thank you!

     

Back to Top
UI for ASP.NET Ajax is Ready for VS 2017