Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to bind the radcombobox at runtime in asp.net

I have a webpage that has a Telerik RadComboBox in radgrid control on the page,and i have a SqlserverCe database.My issue is how can i write the code to bind the RadCombobox at page load event in asp.net please help me.....

like image 908
Victor Athoti. Avatar asked Dec 22 '22 13:12

Victor Athoti.


1 Answers

Items are bound to RadComboBox basically in the same way as to an ASP.NET DropDownList.

You can bind the RadComboBox to ASP.NET 2.0 datasources, ADO.NET DataSet/DataTable/DataView, to Arrays and ArrayLists, or to an IEnumerable of objects. And of course you can add the items one by one yourself. With RadComboBox, you'll use RadComboBoxItems instead of ListItems.

In one way or other, you'll have to tell the combobox what is each item's text and value.

Working with Items in Server Side Code:

protected void Page_Load(object sender, EventArgs e)
{  
    if (!Page.IsPostBack)  
    {    
        RadComboBoxItem item1 = new RadComboBoxItem();    
        item1.Text = "Item1";   
        item1.Value = "1";    
        RadComboBox1.Items.Add(item1);    
        RadComboBoxItem item2 = new RadComboBoxItem();   
        item2.Text = "Item2";    
        item2.Value = "2";   
        RadComboBox1.Items.Add(item2);    
        RadComboBoxItem item3 = new RadComboBoxItem();    
        item3.Text = "Item3";   
        item3.Value = "3";   
        RadComboBox1.Items.Add(item3);  
    }
}

Binding to DataTable, DataSet, or DataView:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        SqlConnection con = new SqlConnection("Data Source=LOCAL;Initial Catalog=Combo;Integrated Security=True");

        SqlDataAdapter adapter = new SqlDataAdapter("SELECT [Text], [Value] FROM [Links]", con);
        DataTable links = new DataTable();

        adapter.Fill(links);

        combo.DataTextField = "Text";
        combo.DataValueField = "Value";
        combo.DataSource = links;
        combo.DataBind();
    }
}

EDIT: RadComboBox in a Grid:

Inside a RadGrid, it is perhaps easiest to use load on demand, by setting EnableLoadOnDemand="True" and handling the OnItemsRequested event.

protected void RadComboBox1_ItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)
        {
            string sql = "SELECT [SupplierID], [CompanyName], [ContactName], [City] FROM [Suppliers] WHERE CompanyName LIKE @CompanyName + '%'";
            SqlDataAdapter adapter = new SqlDataAdapter(sql,
                ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString);
            adapter.SelectCommand.Parameters.AddWithValue("@CompanyName", e.Text);

            DataTable dt = new DataTable();
            adapter.Fill(dt);

            RadComboBox comboBox = (RadComboBox)sender;
            // Clear the default Item that has been re-created from ViewState at this point.
            comboBox.Items.Clear();

            foreach (DataRow row in dt.Rows)
            {
                RadComboBoxItem item = new RadComboBoxItem();
                item.Text = row["CompanyName"].ToString();
                item.Value = row["SupplierID"].ToString();
                item.Attributes.Add("ContactName", row["ContactName"].ToString());

                comboBox.Items.Add(item);

                item.DataBind();
            }
        } 

You can also bind the combobox manually in the grid's OnItemDataBoundHandler event:

protected void OnItemDataBoundHandler(object sender, GridItemEventArgs e)
        {
            if (e.Item.IsInEditMode)
            {
                GridEditableItem item = (GridEditableItem)e.Item;

                if (!(e.Item is IGridInsertItem))
                {
                    RadComboBox combo = (RadComboBox)item.FindControl("RadComboBox1");

                    // create and add items here
                    RadComboBoxItem item = new RadComboBoxItem("text","value");
                    combo.Items.Add(item);

                }
            }
        }
like image 96
mika Avatar answered Dec 29 '22 10:12

mika