I have a RadButton:
<rad:RadButton ID="btnApplyFilters" runat="server"Text="Apply Filters" UseSubmitBehavior="false" />Conflicting with a RadComboBox:
<rad:RadComboBox runat="server"
ID="rcbSearchLastName"
EnableLoadOnDemand="true"
OnItemsRequested="rcbSearchLastName_ItemsRequested"
AutoPostBack="true"
ShowWhileLoading="false"
ShowToggleImage="false" />
When I type in the textbox I am getting suggest style choices in the dropdown. If I select from the dropdown choices the rcbSearchLastName.SelectedIndexChanged event fires in the code behind. While I am typing the rcbSearchLastName_ItemsRequested event is fired.If I type in the TextBox portion of the RadCombBox, then click a RadButton, the button click event is not fired.
Is it possible to use the components differently so that this conflict doesn't occur? Or is there a way to queue the events with the AjaxManager?
Thanks,
Dan
8 Answers, 1 is accepted
Could you clarify which version of the controls you are using.
I've made a sample project trying to reproduce the problem you are experiencing, but to no avail. The click event of the RadButton is fired correctly on my side.
Please try to provide more information about your particular implementation and specify whether you are using ajax or not.
Dimitar Terziev
the Telerik team
Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.
I made a sample project to demonstrate the problem I'm having. In this project, you'll notice I am trying to implement filters. Since I wanted paging of my data I could not use the built in RadFilters plus I have my data layer isolated so I cannot wire up the controls the way most of the examples are, with simple sql statements.
To reproduce the problem I'm having, type in either box and press the Apply Filters btn. My problem is I have to press the btn 2 times.
Here's my aspx:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default2.aspx.vb" Inherits="Default2" %><%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="rad" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title></title></head><body><form id="form1" runat="server"><div> <rad:RadScriptManager ID="RadScriptManager1" runat="server" /> <rad:RadWindowManager ID="RadWindowManager1" runat="server" EnableShadow="true" /> <rad:RadAjaxManager ID="RadAjaxManager1" runat="server"> <AjaxSettings> <rad:AjaxSetting AjaxControlID="RadAjaxManager1"> <UpdatedControls> <rad:AjaxUpdatedControl ControlID="RadAjaxPanel1" /> <rad:AjaxUpdatedControl ControlID="rgCustomers" /> </UpdatedControls> </rad:AjaxSetting> <rad:AjaxSetting AjaxControlID="RadAjaxPanel1"> <UpdatedControls> <rad:AjaxUpdatedControl ControlID="rgCustomers" /> </UpdatedControls> </rad:AjaxSetting> <rad:AjaxSetting AjaxControlID="btnApplyFilters"> <UpdatedControls> <rad:AjaxUpdatedControl ControlID="rgCustomers" /> </UpdatedControls> </rad:AjaxSetting> <rad:AjaxSetting AjaxControlID="btnClearFilters"> <UpdatedControls> <rad:AjaxUpdatedControl ControlID="rgCustomers" /> </UpdatedControls> </rad:AjaxSetting> </AjaxSettings> </rad:RadAjaxManager> <h2>NW Customers</h2> <rad:RadAjaxPanel runat="server" ID="RadAjaxPanel1"> <div style="width:100%;text-align:right;margin-bottom:2px;float:none;"> <rad:RadButton ID="btnApplyFilters" runat="server" Text="Apply Filters" Skin="Outlook" Width="90px" UseSubmitBehavior="false" /> <rad:RadButton ID="btnClearFilters" runat="server" Text="Clear Filters" Skin="Outlook" Width="90px" UseSubmitBehavior="false" /> </div> <rad:RadComboBox runat="server" ID="rcbSearchCompanyName" Width="150px" ShowToggleImage="false" EnableLoadOnDemand="true" OnItemsRequested="rcbSearchCompanyName_ItemsRequested" AutoPostBack="true" LoadingMessage="" CollapseDelay="0" CollapseAnimation-Type="None" ExpandAnimation-Type="None" ShowWhileLoading="false" /> <rad:RadComboBox runat="server" ID="rcbSearchContactName" Width="150px" ShowToggleImage="false" EnableLoadOnDemand="true" OnItemsRequested="rcbSearchContactName_ItemsRequested" AutoPostBack="true" LoadingMessage="" CollapseDelay="0" CollapseAnimation-Type="None" ExpandAnimation-Type="None" ShowWhileLoading="false" /> </rad:RadAjaxPanel> <rad:RadGrid ID="rgCustomers" runat="server" Skin="Vista" AllowSorting="false" AllowFilteringByColumn="false" AllowPaging="false" AllowCustomPaging="false" Width="100%" AutoGenerateColumns="false" ShowFooter="false" ShowHeader="true" > <ClientSettings EnablePostBackOnRowClick="true"> <Selecting AllowRowSelect="True" /> </ClientSettings> <MasterTableView Width="100%" TableLayout="Fixed" GridLines="Both" > <Columns> <rad:GridBoundColumn UniqueName="CustomerID" DataField="CustomerID" ReadOnly="true" Visible="false" /> <rad:GridBoundColumn HeaderText = "Company Name" DataField="CompanyName" ItemStyle-Width="100%" HeaderStyle-Width="110px" /> <rad:GridBoundColumn HeaderText = "Contact Name" DataField="ContactName" ItemStyle-Width="100%" HeaderStyle-Width="100px" /> <rad:GridBoundColumn HeaderText = "Postal Code" DataField="PostalCode" ItemStyle-Width="100%" HeaderStyle-Width="85px" /> <rad:GridBoundColumn HeaderText = "Phone" DataField="Phone" ItemStyle-Width="100%" HeaderStyle-Width="50px" /> </Columns> </MasterTableView> </rad:RadGrid></div></form></body></html>And my codebehind:
Imports System.DataImports System.Data.SqlClientImports Telerik.Web.UIPartial Class Default2 Inherits System.Web.UI.Page Public Shared Function GetData_DataTable(query As String, Optional param1 As String = Nothing, Optional param2 As String = Nothing) As DataTable Dim information As New DataTable() Dim conn As New SqlConnection(ConfigurationManager.ConnectionStrings("NorthwindConnectionString").ConnectionString) Try conn.Open() Dim adapter As New SqlDataAdapter() Try adapter.SelectCommand = New SqlCommand(query, conn) If param1 IsNot Nothing Then adapter.SelectCommand.Parameters.AddWithValue("@param1", param1) End If If param2 IsNot Nothing Then adapter.SelectCommand.Parameters.AddWithValue("@param2", param2) End If adapter.Fill(information) Finally If Not [Object].Equals(adapter.SelectCommand, Nothing) Then adapter.SelectCommand.Dispose() End If End Try Finally If conn.State = ConnectionState.Open Then conn.Close() End If End Try Return information End Function Public Function GetData_ddlCompanyName() As DataTable Return GetData_DataTable("SELECT CompanyName FROM [Customers] WHERE CompanyName LIKE '%' + @param1 + '%' AND ContactName LIKE '%' + @param2 + '%'", Session("CompanyName"), Session("ContactName")) End Function Public Function GetData_ddlContactName() As DataTable Return GetData_DataTable("SELECT ContactName FROM [Customers] WHERE CompanyName LIKE '%' + @param1 + '%' AND ContactName LIKE '%' + @param2 + '%'", Session("CompanyName"), Session("ContactName")) End Function Public Function GetData_grid() As DataTable Return GetData_DataTable("Select CustomerID, CompanyName, ContactName, PostalCode, Phone FROM [Customers] WHERE CompanyName LIKE '%' + @param1 + '%' AND ContactName LIKE '%' + @param2 + '%'", Session("CompanyName"), Session("ContactName")) End Function Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load If Not IsPostBack Then Session("CompanyName") = "" Session("ContactName") = "" End If End Sub Protected Sub rgCustomers_NeedDataSource(sender As Object, e As Telerik.Web.UI.GridNeedDataSourceEventArgs) Handles rgCustomers.NeedDataSource rgCustomers.DataSource = GetData_grid() End Sub Protected Sub rcbSearchCompanyName_ItemsRequested(sender As Object, e As Telerik.Web.UI.RadComboBoxItemsRequestedEventArgs) Handles rcbSearchCompanyName.ItemsRequested Session("CompanyName") = Trim(e.Text) Dim Customers As DataTable = GetData_ddlCompanyName() For i As Int32 = 0 To Customers.Rows.Count - 1 Dim objDR As DataRow = Customers.Rows(i) rcbSearchCompanyName.Items.Add(New RadComboBoxItem(objDR.Item("CompanyName"), objDR.Item("CompanyName"))) Next End Sub Protected Sub rcbSearchContactName_ItemsRequested(sender As Object, e As Telerik.Web.UI.RadComboBoxItemsRequestedEventArgs) Handles rcbSearchContactName.ItemsRequested Session("ContactName") = Trim(e.Text) Dim Customers As DataTable = GetData_ddlContactName() For i As Int32 = 0 To Customers.Rows.Count - 1 Dim objDR As DataRow = Customers.Rows(i) rcbSearchContactName.Items.Add(New RadComboBoxItem(objDR.Item("ContactName"), objDR.Item("ContactName"))) Next End Sub Protected Sub rcbSearchCompanyName_SelectedIndexChanged(sender As Object, e As Telerik.Web.UI.RadComboBoxSelectedIndexChangedEventArgs) Handles rcbSearchCompanyName.SelectedIndexChanged Session("CompanyName") = Trim(e.Text) End Sub Protected Sub rcbSearchContactName_SelectedIndexChanged(sender As Object, e As Telerik.Web.UI.RadComboBoxSelectedIndexChangedEventArgs) Handles rcbSearchContactName.SelectedIndexChanged Session("ContactName") = Trim(e.Text) End Sub Private Sub btnClearFilters_Click(sender As Object, e As System.EventArgs) Handles btnClearFilters.Click Session("CustomerFilterApplied") = False rcbSearchCompanyName.Text = "" rcbSearchContactName.Text = "" Session("CompanyName") = "" Session("ContactName") = "" rgCustomers.Rebind() rgCustomers.MasterTableView.Rebind() End Sub Private Sub btnApplyFilters_Click(sender As Object, e As System.EventArgs) Handles btnApplyFilters.Click rgCustomers.MasterTableView.Rebind() btnApplyFilters.Text = "Apply Filters" End SubEnd ClassAre you able to reproduce the issue?
Dimitar will be of until the end of the week so I'll take this issue.
Could you please attach your full code as well as the database in a .zip file and send it to us via one of the sites for free online storage as 4shared.com. That way we can inspect it and help you.
Thank you!
Regards,
Veronica Milcheva
the Telerik team
Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.
To reproduce the problem,
1 .Open Default2.aspx
2. Type "al" in the first textbox
3. Click the Apply Filters btn
4. Click Apply Filters again
I think the filtering onClick in step 3 is blocked by the call to rgCustomers.NeedDataSource after the textbox onblur but before the click event. If you wait for the NeedDataSource to finish before clicking the button in step 3 the button works no problems.. I'm trying to think of some way to maybe delay the onblur and call it async or maybe putting the button click into an async call.
Thanks,
Dan
Thank you for the attached project.
Please note that we are in the process of working for the upcomming Release. I'll contact as soon as possible.
Thank you for your patience.
All the best,
Veronica Milcheva
the Telerik team
Register for the Q2 2011 What's New Webinar Week. Mark your calendar for the week starting July 18th and book your seat for a walk through of all the exciting stuff we will ship with the new release!
I'm still having this issue with 2011.2.712.40.
Do I have the most recent release? Does this issue occur on your end?
Thanks,
Dan
We have downloaded your code and reproduced the issue.
I am suggesting you change the Ajax Settings on your page in this manner:
<rad:RadAjaxManager ID="RadAjaxManager1" runat="server"> <AjaxSettings> <%-- <rad:AjaxSetting AjaxControlID="RadAjaxManager1"> <UpdatedControls> <rad:AjaxUpdatedControl ControlID="RadAjaxPanel1" /> <rad:AjaxUpdatedControl ControlID="rgCustomers" /> </UpdatedControls> </rad:AjaxSetting> <rad:AjaxSetting AjaxControlID="RadAjaxPanel1"> <UpdatedControls> <rad:AjaxUpdatedControl ControlID="rgCustomers" /> </UpdatedControls> </rad:AjaxSetting>--%> <rad:AjaxSetting AjaxControlID="btnApplyFilters"> <UpdatedControls> <rad:AjaxUpdatedControl ControlID="rgCustomers" /> </UpdatedControls> </rad:AjaxSetting> <rad:AjaxSetting AjaxControlID="btnClearFilters"> <UpdatedControls> <rad:AjaxUpdatedControl ControlID="rgCustomers" /> </UpdatedControls> </rad:AjaxSetting> <rad:AjaxSetting AjaxControlID="rcbSearchCompanyName"> <UpdatedControls> <rad:AjaxUpdatedControl ControlID="rgCustomers" /> <rad:AjaxUpdatedControl ControlID="rcbSearchCompanyName" /> </UpdatedControls> </rad:AjaxSetting> </AjaxSettings></rad:RadAjaxManager>Kind regards,
Kalina
the Telerik team
Thank you for being the most amazing .NET community! Your unfailing support is what helps us charge forward! We'd appreciate your vote for Telerik in this year's DevProConnections Awards. We are competing in mind-blowing 20 categories and every vote counts! VOTE for Telerik NOW >>