This is a migrated thread and some comments may be shown as answers.

Radgrid inside Radgrid MasterTableViewEditForm

14 Answers 234 Views
General Discussions
This is a migrated thread and some comments may be shown as answers.
Soumya
Top achievements
Rank 1
Soumya asked on 29 Mar 2012, 10:18 AM
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.


14 Answers, 1 is accepted

Sort by
0
Princy
Top achievements
Rank 2
answered on 29 Mar 2012, 11:21 AM
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.
0
Soumya
Top achievements
Rank 1
answered on 29 Mar 2012, 12:27 PM
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>

0
Princy
Top achievements
Rank 2
answered on 30 Mar 2012, 06:26 AM
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.
0
Soumya
Top achievements
Rank 1
answered on 30 Mar 2012, 07:24 AM
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



0
Princy
Top achievements
Rank 2
answered on 30 Mar 2012, 10:47 AM
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.
0
Soumya
Top achievements
Rank 1
answered on 03 Apr 2012, 10:37 AM
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.
0
MV
Top achievements
Rank 1
answered on 31 Dec 2015, 11:44 PM
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>
0
Kostadin
Telerik team
answered on 05 Jan 2016, 01:53 PM
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
0
MV
Top achievements
Rank 1
answered on 08 Jan 2016, 06:49 PM

Thank you!!!! that worked.

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

0
Kostadin
Telerik team
answered on 13 Jan 2016, 12:12 PM
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
0
MV
Top achievements
Rank 1
answered on 22 Jan 2016, 11:13 PM

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.

0
MV
Top achievements
Rank 1
answered on 22 Jan 2016, 11:17 PM

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!

0
Kostadin
Telerik team
answered on 27 Jan 2016, 01:45 PM
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
0
MV
Top achievements
Rank 1
answered on 03 Feb 2016, 12:41 AM

Awesome, Thank you!

 

Tags
General Discussions
Asked by
Soumya
Top achievements
Rank 1
Answers by
Princy
Top achievements
Rank 2
Soumya
Top achievements
Rank 1
MV
Top achievements
Rank 1
Kostadin
Telerik team
Share this question
or