#c# #asp.net #telerik #radcombobox
#c# #asp.net #telerik #radcombobox
Вопрос:
У меня есть веб-страница, на которой есть Telerik RadComboBox в элементе управления radgrid на странице, и у меня есть база данных SqlServerCe.Моя проблема заключается в том, как я могу написать код для привязки RadComboBox к событию загрузки страницы в asp.net пожалуйста, помогите мне…..
Комментарии:
Ответ №1:
Элементы привязываются к RadComboBox в основном таким же образом, как к ASP.NET Выпадающий список.
Вы можете привязать RadComboBox к ASP.NET источники данных 2.0, ADO.NET DataSet / DataTable / DataView, к массивам и ArrayLists или к множеству объектов. И, конечно, вы можете добавлять элементы один за другим самостоятельно. В RadComboBox вы будете использовать RadComboBoxItems вместо ListItems.
Так или иначе, вам придется сообщить combobox, каков текст и значение каждого элемента.
Работа с элементами в коде на стороне сервера:
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, пожалуй, проще всего использовать load on demand, установив 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();
}
}
Вы также можете привязать combobox вручную в событии grid 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);
}
}
}
Комментарии:
1. Привет, спасибо, что дали ответ на самом деле мой radcombobox находится в radgrid controlle, тогда как я могу привязать событие pageload, пожалуйста, помогите мне….