如何在asp.net中的运行时绑定radcombobox

本文关键字:运行时 绑定 radcombobox net asp | 更新日期: 2023-09-27 17:58:37

我有一个网页,该网页上的radgrid控件中有一个Telerik RadComboBox,我有一份SqlserverCe数据库。我的问题是如何在asp.net中的页面加载事件中编写绑定RadCombobox的代码,请帮助我……

如何在asp.net中的运行时绑定radcombobox

项绑定到RadComboBox的方式与绑定到ASP.NET DropDownList的方式基本相同。

您可以将RadComboBox绑定到ASP.NET 2.0数据源、ADO.NET DataSet/DataTable/DataView、Arrays和ArrayLists,或绑定到对象的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();
    }
}

编辑:网格中的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);
                }
            }
        }