как связать radcombobox во время выполнения в asp.net

У меня есть веб-страница с Telerik RadComboBox в элементе управления radgrid на странице, и у меня есть база данных SqlserverCe. Моя проблема заключается в том, как я могу написать код для привязки RadCombobox при событии загрузки страницы в asp.net, пожалуйста, помогите мне... ..


person Victor Athoti.    schedule 07.06.2011    source источник
comment
telerik.com/help/aspnet- аякс/   -  person Yuriy Rozhovetskiy    schedule 07.06.2011


Ответы (1)


Элементы привязаны к RadComboBox в основном так же, как к ASP.NET DropDownList.

Вы можете привязать RadComboBox к источникам данных ASP.NET 2.0., ADO.NET DataSet /DataTable/DataView, в массивы и списки массивов. или в IEnumerable объектов. И, конечно же, вы можете добавлять элементы по одному самостоятельно. С RadComboBox вы будете использовать RadComboBoxItems вместо ListItems.

Так или иначе, вам придется сообщить выпадающему списку текст и значение каждого элемента.

Работа с элементами в коде на стороне сервера :

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);  
    }
}

Привязка к DataTable, DataSet или 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 в сетке:

Внутри RadGrid, пожалуй, проще всего использовать загрузку по запросу, установив EnableLoadOnDemand="True" и обработав событие OnItemsRequested.

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();
            }
        } 

Вы также можете привязать поле со списком вручную в событии OnItemDataBoundHandler сетки:

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);

                }
            }
        }
person mika    schedule 07.06.2011
comment
Привет, спасибо за ответ, на самом деле мой radcombobox находится в управлении radgrid, тогда как я могу выполнить привязку к событию загрузки страницы, пожалуйста, помогите мне .... - person Victor Athoti.; 07.06.2011