Hi ,
I have a user control having a radCombobox Now I want to use the selectedvalue from this dropdown on an aspx page where I want to use this selected value as an input parameter to a function which fills a normal dropdown list on this page based on what the value was selected.
I have called this function in the onitemsrequested event of the normal dropdown.Now the problem is that it always takes null.
As a result the dropdown is blank irrespective of what I choose.
Please let me know how to achieve this,if this is not possible by onitemsrequested event,I do not want to create a new user control having both the things on one page.Instead i want the page to call usercontrol value.
I tried using public property concept.it does not work.
Here is the event definition.
[
protected void ddlCommodity_itemRequested(object o, RadComboBoxItemsRequestedEventArgs e)
{
string exchange1 = ExchangeType.Exchange;
DataSet CommodityCodes = service.GetCommodities(exchange1);
ddlCommodity.DataSource = CommodityCodes.Tables[0];
ddlCommodity.DataTextField = "'ALL'";
ddlCommodity.DataValueField = "'ALL'";
ddlCommodity.DataBind();
}
the property is
public string Exchange
{
get { return ddlExchangeType.SelectedValue;}
set { ddlExchangeType.SelectedValue = value; }
}
]
4 Answers, 1 is accepted
I have tried one example for your issue. i am sending you some test code please have look over it.
Radcombo UserControl :<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="RadComboBox.ascx.cs" Inherits="LearnTelerikControls.UserControls.RadComboBox" %><telerik:RadComboBox ID="rcbBusinessUnits" runat="server" EnableEmbeddedSkins="false" ForeColor="Blue" Font-Underline="true" Width="400px" Font-Bold="true" AutoPostBack="true"> <Items> <telerik:RadComboBoxItem Text="--Select--" Value="1" /> <telerik:RadComboBoxItem Text="Item_1" Value="2" /> <telerik:RadComboBoxItem Text="Item_2" Value="3" /> <telerik:RadComboBoxItem Text="Item_3" Value="4" /> <telerik:RadComboBoxItem Text="Item_4" Value="5" /> </Items></telerik:RadComboBox>Properties in(.cs) of User Control:using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;namespace LearnTelerikControls.UserControls{ public partial class RadComboBox : System.Web.UI.UserControl { public string Exchange { get { return rcbBusinessUnits.SelectedValue; } set { rcbBusinessUnits.SelectedValue = value; } } protected void Page_Load(object sender, EventArgs e) { } }}Now Aspx Code:
<%@ Page Title="" Language="C#" MasterPageFile="~/MainStarter.Master" AutoEventWireup="true" CodeBehind="NormalDropdown.aspx.cs" Inherits="LearnTelerikControls.RadCombo.NormalDropdown" %><%@ Register TagPrefix="RadComboBoxUserControl" TagName="RadComboBoxUserControl" Src="~/UserControls/RadComboBox.ascx" %><asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"></asp:Content><asp:Content ID="Content2" ContentPlaceHolderID="BodyContainer" runat="server"> <table> <tr> <td> <RadComboBoxUserControl:RadComboBoxUserControl ID="rcbUserControl" runat="server" /> </td> </tr> <tr> <td> New Combo: </td> <td> <telerik:RadComboBox ID="ddlCommodity" runat="server" EmptyMessage="Select a Values" ShowMoreResultsBox="true" EnableLoadOnDemand="True" OnItemsRequested="ddlCommodity_itemRequested"> </telerik:RadComboBox> </td> </tr> </table></asp:Content>using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Data;using Telerik.Web.UI;namespace LearnTelerikControls.RadCombo{ public partial class NormalDropdown : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void ddlCommodity_itemRequested(object o, RadComboBoxItemsRequestedEventArgs e) { BindCombo(); ddlCommodity.SelectedValue = rcbUserControl.Exchange; } private void BindCombo() { DataTable dt = GetDataTable(); ddlCommodity.DataSource = dt; ddlCommodity.DataTextField = "FirstName"; ddlCommodity.DataValueField = "ID"; ddlCommodity.DataBind(); } private DataTable GetDataTable() { DataTable dt = new DataTable("TestTable"); dt.Columns.Add("ID"); dt.Columns.Add("FirstName"); dt.Rows.Add(1, "Abhishek"); dt.Rows.Add(2, "Adiya"); dt.Rows.Add(3, "ABC"); dt.Rows.Add(4, "PQR"); dt.Rows.Add(5, "XYZ"); return dt; } }}Please try this with your code. Let me know if any query.
Thanks,
Abhishek K
Thanks for the reply.
Actually I wanted to pass the usercontrol selected value as a function parameter.for eg.your GetDataTable()parameter function takes rcbUserControl.Exchange as input parameter.Based on that the normalDropDown is to be populated.
Please help me how to achieve this.
Regards,
Tarang
All i did was in the main page I declared a radcombobox type variable and assigned the usercontrol to it with help of find control.
protected
void commodity_ItemRequested(object o, RadComboBoxItemsRequestedEventArgs e)
{
RadComboBox exchange1 = (RadComboBox)ExchangeType.FindControl("ddlExchangeType"); // I created this variable
string ExchangeList = exchange1.SelectedValue; //all properties of usecontrol can be accessed thru here
DataSet CommodityCodes = service.GetCommodities(ExchangeList);
ddlCommodity.DataSource = CommodityCodes.Tables[0];
ddlCommodity.DataTextField =
"'ALL'";
ddlCommodity.DataValueField ="'ALL'";
ddlCommodity.DataBind();
}
It might be helpful if any one facing similar problem .There posting it.
Thanks
Tarang
I have updated the code according to your requirement please have one look.
NormalDropdown.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/MainStarter.Master" AutoEventWireup="true"
CodeBehind="NormalDropdown.aspx.cs" Inherits="LearnTelerikControls.RadCombo.NormalDropdown" %>
<%@ Register TagPrefix="RadComboBoxUserControl" TagName="RadComboBoxUserControl"
Src="~/UserControls/RadComboBox.ascx" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="BodyContainer" runat="server">
<table>
<tr>
<td>
<RadComboBoxUserControl:RadComboBoxUserControl ID="rcbUserControl" runat="server" />
</td>
</tr>
<tr>
<td>
<telerik:RadComboBox ID="ddlCommodity" runat="server" EmptyMessage="Select a Values" Height=""
ShowMoreResultsBox="true" EnableLoadOnDemand="True" OnItemsRequested="ddlCommodity_itemRequested">
</telerik:RadComboBox>
</td>
</tr>
</table>
</asp:Content>
---------------------------------------------------------------------------------------------------------
NormalDropdown.csusing System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Data;using Telerik.Web.UI;namespace LearnTelerikControls.RadCombo{ public partial class NormalDropdown : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { } } protected void ddlCommodity_itemRequested(object o, RadComboBoxItemsRequestedEventArgs e) { BindCombo(); } protected void BindCombo() { DataTable dt = GetDataTable(rcbUserControl.Exchange); ddlCommodity.DataSource = dt; ddlCommodity.DataTextField = "Name"; ddlCommodity.DataValueField = "ID"; ddlCommodity.DataBind(); } protected DataTable GetDataTable(string TypeID) { DataTable table = GetNewTable(); table.Rows.Add(1, "Winter", null); table.Rows.Add(2, "Summer", null); table.Rows.Add(3, "Biathlon", 1); table.Rows.Add(4, "Figure skating", 1); table.Rows.Add(5, "Alpine skiing", 1); table.Rows.Add(6, "Ski jumping", 1); table.Rows.Add(7, "Basketball", 2); table.Rows.Add(8, "Boxing", 2); table.Rows.Add(9, "Swimming", 2); table.Rows.Add(10, "Volleyball", 2); table.Rows.Add(11, "Wrestling", 2); table.Rows.Add(12, "Cycling", 2); //filter the values from the datatable DataTable FilteredTable = GetNewTable(); foreach (DataRow Item in table.Rows) { DataRow Row = FilteredTable.NewRow(); if(TypeID.Equals(Item[2].ToString())) { Row[0] = Item[0].ToString(); Row[1] = Item[1].ToString(); Row[2] = Item[2].ToString(); FilteredTable.Rows.Add(Row); } } return FilteredTable; } protected DataTable GetNewTable() { DataTable table = new DataTable(); table.Columns.Add("ID", typeof(int)); table.Columns.Add("Name"); table.Columns.Add("TypeID", typeof(int)); return table; } }}RadComboBox.ascx :<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="RadComboBox.ascx.cs" Inherits="LearnTelerikControls.UserControls.RadComboBox" %><telerik:RadComboBox ID="rcbBusinessUnits" runat="server" EnableEmbeddedSkins="false" ForeColor="Blue" Font-Underline="true" Width="400px" Font-Bold="true" AutoPostBack="true"> <Items> <telerik:RadComboBoxItem Text="--Select--" Value="0" /> <telerik:RadComboBoxItem Text="Item_1" Value="1" /> <telerik:RadComboBoxItem Text="Item_2" Value="2" /> </Items></telerik:RadComboBox>No Changes in the RadComboBox.cs
Let me know if any issue. I think you got the solution for your query.
Thanks,
Abhishek K