Radlistbox OnSelectedIndexChanged event is not working under the radgrid view.

1 Answer 79 Views
General Discussions Grid ListBox
Priyanka
Top achievements
Rank 1
Priyanka asked on 20 Aug 2024, 12:42 PM | edited on 21 Aug 2024, 06:36 PM
I have Radlistbox in DetailTables tag of radgrid. I want to used OnSelectedIndexChanged event of radlist box but it wasn't trigged code behind event.

1 Answer, 1 is accepted

Sort by
0
Vasko
Telerik team
answered on 23 Aug 2024, 06:29 AM

Hi Priyanka,

Please ensure the ListBox has the AutoPostBack set to true, to trigger the SelectedIndexChanged event: 

<telerik:RadGrid ID="RadGrid1" runat="server" AllowPaging="True" Width="800px"
    OnNeedDataSource="RadGrid1_NeedDataSource"
    OnDetailTableDataBind="RadGrid1_DetailTableDataBind">
    <MasterTableView Name="Orders" AutoGenerateColumns="False" DataKeyNames="OrderID">
        <Columns>
            <telerik:GridNumericColumn DataField="OrderID" DataType="System.Int32"
                FilterControlAltText="Filter OrderID column" HeaderText="OrderID"
                ReadOnly="True" SortExpression="OrderID" UniqueName="OrderID">
            </telerik:GridNumericColumn>
        </Columns>
        <DetailTables>
            <telerik:GridTableView Name="OrderDetails" AutoGenerateColumns="false">
                <Columns>
                    <telerik:GridNumericColumn DataField="OrderID" DataType="System.Int32"
                        FilterControlAltText="Filter OrderID column" HeaderText="OrderID"
                        ReadOnly="True" SortExpression="OrderID" UniqueName="OrderID">
                    </telerik:GridNumericColumn>
                    <telerik:GridTemplateColumn>
                        <ItemTemplate>
                            <telerik:RadListBox runat="server" ID="RadListBoxInGrid" OnSelectedIndexChanged="RadListBoxInGrid_SelectedIndexChanged" AutoPostBack="true">
                                <Items>
                                    <telerik:RadListBoxItem Text="Item 1" />
                                    <telerik:RadListBoxItem Text="Item 2" />
                                    <telerik:RadListBoxItem Text="Item 3" />
                                    <telerik:RadListBoxItem Text="Item 4" />
                                </Items>
                            </telerik:RadListBox>
                        </ItemTemplate>
                    </telerik:GridTemplateColumn>
                </Columns>
            </telerik:GridTableView>
        </DetailTables>
    </MasterTableView>
</telerik:RadGrid>

<telerik:RadListBox runat="server" ID="RadListBox1" OnSelectedIndexChanged="RadListBox1_SelectedIndexChanged" AutoPostBack="true">
    <Items>
        <telerik:RadListBoxItem Text="Item 1" />
        <telerik:RadListBoxItem Text="Item 2" />
        <telerik:RadListBoxItem Text="Item 3" />
        <telerik:RadListBoxItem Text="Item 4" />
    </Items>
</telerik:RadListBox>
protected void RadListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    int index = RadListBox1.SelectedIndex;
}

protected void RadListBoxInGrid_SelectedIndexChanged(object sender, EventArgs e)
{
    int index = RadListBox1.SelectedIndex;
}

protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
    (sender as RadGrid).DataSource = OrdersTable();
}

protected void RadGrid1_DetailTableDataBind(object sender, GridDetailTableDataBindEventArgs e)
{
    if (e.DetailTableView.Name == "OrderDetails")
    {
        GridDataItem parentItem = e.DetailTableView.ParentItem;

        int orderId = (int)parentItem.GetDataKeyValue("OrderID");

        e.DetailTableView.DataSource = OrderDetailsTable().Select(string.Format("OrderID = '{0}'", orderId));
    }
}

private DataTable OrdersTable()
{
    DataTable dt = new DataTable();

    dt.Columns.Add(new DataColumn("OrderID", typeof(int)));

    dt.PrimaryKey = new DataColumn[] { dt.Columns["OrderID"] };

    for (int i = 0; i < 3; i++)
    {
        int index = i + 1;

        DataRow row = dt.NewRow();

        row["OrderID"] = index;

        dt.Rows.Add(row);
    }

    return dt;
}
private DataTable OrderDetailsTable()
{
    DataTable dt = new DataTable();

    dt.Columns.Add(new DataColumn("OrderID", typeof(int)));

    var orders = OrdersTable();

    int itemsPerOrder = 4;

    for (int rowIndex = 0; rowIndex < orders.Rows.Count; rowIndex++)
    {
        DataRow currentOrder = orders.Rows[rowIndex];

        for (int j = 0; j < itemsPerOrder; j++)
        {
            int index = j + 1;

            DataRow row = dt.NewRow();

            row["OrderID"] = currentOrder["OrderID"];

            dt.Rows.Add(row);
        }
    }
    return dt;
}

Regards,
Vasko
Progress Telerik

Stay tuned by visiting our public roadmap and feedback portal pages! Or perhaps, if you are new to our Telerik family, check out our getting started resources
Tags
General Discussions Grid ListBox
Asked by
Priyanka
Top achievements
Rank 1
Answers by
Vasko
Telerik team
Share this question
or