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

Rad Ajax Manager Problem

3 Answers 55 Views
Grid
This is a migrated thread and some comments may be shown as answers.
immad
Top achievements
Rank 1
immad asked on 24 Oct 2013, 07:59 AM
Hello,

i have a problem regarding load on demand grid combo box
the problem is i want two combo box field  that load grid in one asp.net page

but i am getting error like this

Only one instance of a RadAjaxManager can be added to the page!


i am using two ajax manager.
you can see the example of telerik combox box.i want a two combo box that load data on grid on same page
http://demos.telerik.com/aspnet-ajax/controls/examples/integration/gridincombobox/defaultcs.aspx?product=grid

please help me out 
i am a beginner in telerik
thanks 

   

3 Answers, 1 is accepted

Sort by
0
Princy
Top achievements
Rank 2
answered on 24 Oct 2013, 09:05 AM
Hi Immad,

You do not have to use two RadAjaxManager for two ComboBox, both can be added to one.Please try the following code snippet.

ASPX:
<telerik:RadCodeBlock ID="rcb1" runat="server">
    <script type="text/javascript">
        var grid;
        function GridCreated(sender, args) {
            grid = sender;
        }
        function RowClicked(sender, args) {
            var cellValues1 = args.getDataKeyValue("OrderID") + ", " + args.getDataKeyValue("ProductName") + ", $" + args.getDataKeyValue("UnitPrice");
            var cellValues2 = args.getDataKeyValue("OrderID") + ", " + args.getDataKeyValue("CustomerID");
            var combo = $find("<%= RadComboBox1.ClientID %>");
            var combo1 = $find("<%= RadComboBox2.ClientID %>");
            setTimeout(function () {
                combo.set_text(cellValues1);
            }, 50);
            setTimeout(function () {
                combo1.set_text(cellValues2);
            }, 50);
        }
        function ShouldInitiateAjaxRequest(comboText) {
            if (comboText.length > 2) {
                $find("<%= RadAjaxManager1.ClientID %>").ajaxRequest("LoadFilteredData");
                return true;
            }
            else {
                return false;
            }
        }
        function HandleOpen(sender, args) {
 
            var flag = ShouldInitiateAjaxRequest(sender.get_text());
            if (!flag) {
                args.set_cancel(true);
            }
        }
        function HandleKeyPressed(sender) {
            var combo = $find(sender.id);
            combo.showDropDown();
        }
    </script>
</telerik:RadCodeBlock>
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" OnAjaxRequest="RadAjaxManager1_AjaxRequest"
    RequestQueueSize="3">
</telerik:RadAjaxManager>
<telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server">
</telerik:RadAjaxLoadingPanel>
<telerik:RadComboBox ID="RadComboBox1" Width="340px" runat="server" MarkFirstMatch="True"
    AllowCustomText="True" OnClientDropDownOpening="HandleOpen" ExpandAnimation-Type="None"
    CollapseAnimation-Type="None" DropDownWidth="340px" onkeyup="HandleKeyPressed(this)">
    <ItemTemplate>
        <telerik:RadGrid ID="RadGrid1" Width="325px" runat="server" OnNeedDataSource="RadGrid1_NeedDataSource">
            <MasterTableView NoMasterRecordsText="" AutoGenerateColumns="False" DataKeyNames="OrderID,ProductName,UnitPrice"
                Width="100%" ClientDataKeyNames="OrderID,ProductName,UnitPrice" TableLayout="Fixed">
                <Columns>
                    <telerik:GridBoundColumn HeaderText="OrderID" DataField="OrderID" UniqueName="OrderID">
                        <HeaderStyle Width="75px"></HeaderStyle>
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn HeaderText="ProductName" DataField="ProductName" UniqueName="ProductName">
                        <HeaderStyle Width="138px"></HeaderStyle>
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn HeaderText="UnitPrice" DataField="UnitPrice" UniqueName="UnitPrice"
                        DataFormatString="{0:$###,###.##}">
                        <HeaderStyle Width="65px"></HeaderStyle>
                    </telerik:GridBoundColumn>
                </Columns>
            </MasterTableView>
            <ClientSettings>
                <ClientEvents OnRowClick="RowClicked" OnGridCreated="GridCreated"></ClientEvents>
                <Scrolling AllowScroll="true" UseStaticHeaders="true" ScrollHeight="300px"></Scrolling>
            </ClientSettings>
        </telerik:RadGrid>
    </ItemTemplate>
    <Items>
        <telerik:RadComboBoxItem runat="server" Text=" "></telerik:RadComboBoxItem>
    </Items>
</telerik:RadComboBox>
<telerik:RadComboBox ID="RadComboBox2" Width="340px" runat="server" MarkFirstMatch="True"
    AllowCustomText="True" OnClientDropDownOpening="HandleOpen" ExpandAnimation-Type="None"
    CollapseAnimation-Type="None" DropDownWidth="340px" onkeyup="HandleKeyPressed(this)">
    <ItemTemplate>
        <telerik:RadGrid ID="RadGrid2" Width="325px" runat="server" OnNeedDataSource="RadGrid2_NeedDataSource">
            <MasterTableView NoMasterRecordsText="" AutoGenerateColumns="False" DataKeyNames="OrderID,CustomerID"
                Width="100%" ClientDataKeyNames="OrderID,CustomerID" TableLayout="Fixed">
                <Columns>
                    <telerik:GridBoundColumn HeaderText="OrderID" DataField="OrderID" UniqueName="OrderID">
                        <HeaderStyle Width="75px"></HeaderStyle>
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn HeaderText="CustomerID" DataField="CustomerID" UniqueName="CustomerID">
                    </telerik:GridBoundColumn>
                </Columns>
            </MasterTableView>
            <ClientSettings>
                <ClientEvents OnRowClick="RowClicked" OnGridCreated="GridCreated"></ClientEvents>
                <Scrolling AllowScroll="true" UseStaticHeaders="true" ScrollHeight="300px"></Scrolling>
            </ClientSettings>
        </telerik:RadGrid>
    </ItemTemplate>
    <Items>
        <telerik:RadComboBoxItem runat="server" Text=" "></telerik:RadComboBoxItem>
    </Items>
</telerik:RadComboBox>

C#:
public static string connectionString = ConfigurationManager.ConnectionStrings["Northwind_newConnectionString3"].ConnectionString;
public static DataTable GetDataTable(string query)
{
    SqlConnection connection1 = new SqlConnection(connectionString);
    SqlDataAdapter adapter1 = new SqlDataAdapter();
    adapter1.SelectCommand = new SqlCommand(query, connection1);
    DataTable table1 = new DataTable();
    connection1.Open();
    try
    {
        adapter1.Fill(table1);
    }
    finally
    {
        connection1.Close();
    }
    return table1;
}
  
protected void RadGrid1_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
{
    RadGrid grid = source as RadGrid;
    if (RadComboBox1.Text != "")
    {
        //split the combobox text and filter the records in the grid based on the first value in the array, i.e. OrderID
        String[] vals = RadComboBox1.Text.Split(',');
        if (vals.Length > 0)
        {
            RadComboBox1.Text = vals[0];
        }
        grid.DataSource = GetDataTable("SELECT [Order Details].OrderID, Products.ProductName, [Order Details].UnitPrice FROM Products, [Order Details] " +
                                        "WHERE [Order Details].OrderID LIKE '" + RadComboBox1.Text + "%'" + " AND Products.ProductID=[Order Details].ProductID");
    }
    else
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("OrderID");
        dt.Columns.Add("ProductName");
        dt.Columns.Add("UnitPrice");
        grid.DataSource = dt;
    }
}
 
protected void RadGrid2_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
{
    RadGrid grid = source as RadGrid;
    if (RadComboBox2.Text != "")
    {
        //split the combobox text and filter the records in the grid based on the first value in the array, i.e. OrderID
        String[] vals = RadComboBox2.Text.Split(',');
        if (vals.Length > 0)
        {
            RadComboBox2.Text = vals[0];
        }
        grid.DataSource = GetDataTable("SELECT OrderID,CustomerID FROM Orders WHERE OrderID LIKE '" + RadComboBox2.Text + "%'");
    }
    else
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("OrderID");
        dt.Columns.Add("CustomerID");              
        grid.DataSource = dt;
    }
}
  
protected void RadAjaxManager1_AjaxRequest(object sender, AjaxRequestEventArgs e)
{
    RadGrid grid1 = RadComboBox1.Items[0].FindControl("RadGrid1") as RadGrid;
    RadGrid grid2 = RadComboBox2.Items[0].FindControl("RadGrid2") as RadGrid;
    //detect the filter action
    if (e.Argument.IndexOf("LoadFilteredData") != -1)
    {
        grid1.Rebind();
    }
    if (e.Argument.IndexOf("LoadFilteredData") != -1)
    {
        grid2.Rebind();
    }
}
  
protected void Page_Load(object sender, EventArgs e)
{
    RadGrid grid1 = RadComboBox1.Items[0].FindControl("RadGrid1") as RadGrid;
    RadGrid grid2 = RadComboBox2.Items[0].FindControl("RadGrid2") as RadGrid;
    RadAjaxManager1.AjaxSettings.AddAjaxSetting(RadAjaxManager1, grid1, RadAjaxLoadingPanel1);
    RadAjaxManager1.AjaxSettings.AddAjaxSetting(RadAjaxManager1, grid2, RadAjaxLoadingPanel1);
}

Thanks,
Princy
0
immad
Top achievements
Rank 1
answered on 25 Oct 2013, 07:24 AM
hi princy

its giving me error

Object reference not set to an instance of an object.

Line 111: RadAjaxManager1.AjaxSettings.AddAjaxSetting(RadAjaxManager1, grid1, RadAjaxLoadingPanel1);

i highlight it with bold 


protected void Page_Load(object sender, EventArgs e)
{
    RadGrid grid1 = RadComboBox1.Items[0].FindControl("RadGrid1"as RadGrid;
    RadGrid grid2 = RadComboBox2.Items[0].FindControl("RadGrid2"as RadGrid;
    RadAjaxManager1.AjaxSettings.AddAjaxSetting(RadAjaxManager1, grid1, RadAjaxLoadingPanel1);
    RadAjaxManager1.AjaxSettings.AddAjaxSetting(RadAjaxManager1, grid2, RadAjaxLoadingPanel1);
}

thanks 4 the help

0
Princy
Top achievements
Rank 2
answered on 25 Oct 2013, 08:46 AM
Hi Immad,

I'm not sure,i couldn't find the issue at my end,Can you try adding the AjaxManager from aspx as follows and see if the error still occurs,if this doesn't help,please provide your full code snippet.

ASPX:
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" OnAjaxRequest="RadAjaxManager1_AjaxRequest"
    RequestQueueSize="3" EnableAJAX="true">
    <AjaxSettings>
        <telerik:AjaxSetting AjaxControlID="RadAjaxManager1">
            <UpdatedControls>
                <telerik:AjaxUpdatedControl ControlID="RadGrid1" LoadingPanelID="RadAjaxLoadingPanel1" />
            </UpdatedControls>
        </telerik:AjaxSetting>
        <telerik:AjaxSetting AjaxControlID="RadAjaxManager1">
            <UpdatedControls>
                <telerik:AjaxUpdatedControl ControlID="RadGrid2" LoadingPanelID="RadAjaxLoadingPanel1" />
            </UpdatedControls>
        </telerik:AjaxSetting>
    </AjaxSettings>
</telerik:RadAjaxManager>
<telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server">
</telerik:RadAjaxLoadingPanel>

Thanks,
Princy

Tags
Grid
Asked by
immad
Top achievements
Rank 1
Answers by
Princy
Top achievements
Rank 2
immad
Top achievements
Rank 1
Share this question
or