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

Expand a single Nested View Server-Side in ItemDataBound

2 Answers 234 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Seth
Top achievements
Rank 1
Seth asked on 26 Mar 2012, 02:54 AM
I would like to expand only 1 row based on data that is found during the ItemDataBound event.  Is this possible?

2 Answers, 1 is accepted

Sort by
0
Shinu
Top achievements
Rank 2
answered on 26 Mar 2012, 07:00 AM
Hi Seth,

I have tried the following code snippet to show ExpandCollapse for some rows based on some condition. Please take look into this and see if it helps.

Aspx:
<telerik:RadGrid ID="RadGrid1" DataSourceID="SqlDataSource1" runat="server" Skin="Sunset"
            Width="600px" AutoGenerateColumns="False" AllowSorting="True" AllowMultiRowSelection="true"
            GridLines="None" onprerender="RadGrid1_PreRender">
            <PagerStyle Mode="NumericPages"></PagerStyle>
            <MasterTableView DataSourceID="SqlDataSource1" DataKeyNames="CustomerID" CommandItemDisplay="Top">
                <DetailTables>
                    <telerik:GridTableView DataKeyNames="OrderID" DataSourceID="SqlDataSource2" Width="100%"
                        runat="server" CommandItemDisplay="Top" PageSize="10">
                        <ParentTableRelation>
                            <telerik:GridRelationFields DetailKeyField="CustomerID" MasterKeyField="CustomerID" />
                        </ParentTableRelation
                        <Columns>
                            <telerik:GridBoundColumn SortExpression="OrderID" HeaderText="OrderID" HeaderButtonType="TextButton"
                                DataField="OrderID" UniqueName="OrderID">
                            </telerik:GridBoundColumn>
                            <telerik:GridBoundColumn SortExpression="OrderDate" HeaderText="Date Ordered" HeaderButtonType="TextButton"
                                DataField="OrderDate" UniqueName="OrderDate">
                            </telerik:GridBoundColumn>
                            <telerik:GridBoundColumn SortExpression="EmployeeID" HeaderText="EmployeeID" HeaderButtonType="TextButton"
                                DataField="EmployeeID" UniqueName="EmployeeID">
                            </telerik:GridBoundColumn>
                            <telerik:GridButtonColumn UniqueName="OrdersSelectColumn" CommandName="Select" Text="Select" />
                            <telerik:GridButtonColumn UniqueName="OrdersDeselectColumn" CommandName="Deselect"
                                Text="Deselect" />
                        </Columns>
                    </telerik:GridTableView>
                </DetailTables>
                <Columns>
                    <telerik:GridBoundColumn SortExpression="CustomerID" HeaderText="CustomerID" HeaderButtonType="TextButton"
                        DataField="CustomerID" UniqueName="CustomerID">
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn SortExpression="ContactName" HeaderText="Contact Name" HeaderButtonType="TextButton"
                        DataField="ContactName" UniqueName="ContactName">
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn SortExpression="CompanyName" HeaderText="Company" HeaderButtonType="TextButton"
                        DataField="CompanyName" UniqueName="CompanyName">
                    </telerik:GridBoundColumn>
                    <telerik:GridButtonColumn UniqueName="CustomersSelectColumn" CommandName="Select"
                        Text="Select" />
                    <telerik:GridButtonColumn UniqueName="CustomersSelectColumn" CommandName="Deselect"
                        Text="Deselect" />
                </Columns>
            </MasterTableView>
        </telerik:RadGrid>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString3 %>"
     SelectCommand="SELECT  Top 10 * from  [Customers]" ></asp:SqlDataSource>
        <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString3 %>"
     SelectCommand="SELECT  Top 10 * from  [Orders]" >
      <SelectParameters>
                <asp:SessionParameter Name="CustomerID" SessionField="CustomerID" Type="string" />
            </SelectParameters>
     </asp:SqlDataSource

C#:
protected void RadGrid1_PreRender(object sender, EventArgs e)
{
    GridItem[] nestedViewItems = RadGrid1.MasterTableView.GetItems(GridItemType.NestedView);
    foreach (GridNestedViewItem nestedViewItem in nestedViewItems)
    {
        foreach (GridTableView nestedView in nestedViewItem.NestedTableViews)
        {
           TableCell cell = nestedView.ParentItem["ExpandColumn"];
            if (nestedView.ParentItem["CustomerID"].Text == "ALFKI")// give your condition
            {
                cell.Controls[0].Visible = true;
                nestedViewItem.Visible = true;               
            }
            else
            {
                cell.Controls[0].Visible = false;
                nestedViewItem.Visible = false;
            }
 
        }
    }
}  

Thanks,
Shinu.




0
Seth
Top achievements
Rank 1
answered on 26 Mar 2012, 04:22 PM
Thank you for the reply, That worked with a small change as I do not have Detail Tables, but a NestedViewTemplate: 

Dim nestedViewItems() As GridItem = rgStops.MasterTableView.GetItems(GridItemType.NestedView)
 
For Each oNestedViewItem As GridNestedViewItem In nestedViewItems
    Dim oCell As TableCell = oNestedViewItem.ParentItem("ExpandColumn")
 
    If oNestedViewItem.ParentItem("StopLocationSts").Text = "O" And msStopLocationStsPrev = "C" Then
        oCell.Controls(0).Visible = True
        oNestedViewItem.Visible = True
    End If
 
    msStopLocationStsPrev = oNestedViewItem.ParentItem("StopLocationSts").Text
Next
Tags
Grid
Asked by
Seth
Top achievements
Rank 1
Answers by
Shinu
Top achievements
Rank 2
Seth
Top achievements
Rank 1
Share this question
or