Hi!
I have a RadGrid with UserControl within EditForm which has couple of ComboBoxes in it. What I'd like to do is to bind data to ComboBoxes depending of the value selected in the first ComboBox. ComboBoxes are bound in the ItemDataBound event of the RadGrid and the code there looks like this:
My question is how can I fill ComboBoxes depending of the selection in the first ComboBox, but within the ItemDataBound event?
Any help would be appreciated!
Regards,
Hrvoje
I have a RadGrid with UserControl within EditForm which has couple of ComboBoxes in it. What I'd like to do is to bind data to ComboBoxes depending of the value selected in the first ComboBox. ComboBoxes are bound in the ItemDataBound event of the RadGrid and the code there looks like this:
protected void gvTicketi_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e)
{
int idAuthenticatedManager = Convert.ToInt32(Session["authenticatedUI"]);
if ((e.Item is GridEditFormItem) && e.Item.IsInEditMode)
{
GridEditFormItem editFormItem = (GridEditFormItem)e.Item;
UserControl userControl = (UserControl)e.Item.FindControl(GridEditFormItem.EditFormUserControlID);
TSEntities db = new TSEntities();
Ticket ticket = new Ticket();
TicketAsset ticketAsset = new TicketAsset();
Daily daily = new Daily();
RadComboBox rcbTip = (RadComboBox)userControl.FindControl("rcbTip");
rcbTip.Items.Add(new RadComboBoxItem("Incident"));
rcbTip.Items.Add(new RadComboBoxItem("Reklamacija"));
rcbTip.Items.Add(new RadComboBoxItem("Nova funkcionalnost"));
rcbTip.DataBind();
rcbTip.FindItemByText("Incident").Selected = true;
RadComboBox rcbStatus = (RadComboBox)userControl.FindControl("rcbStatus");
rcbStatus.Items.Add(new RadComboBoxItem("New"));
rcbStatus.Items.Add(new RadComboBoxItem("U radu"));
rcbStatus.Items.Add(new RadComboBoxItem("On hold"));
rcbStatus.Items.Add(new RadComboBoxItem("Pending"));
rcbStatus.Items.Add(new RadComboBoxItem("Scheduled"));
rcbStatus.Items.Add(new RadComboBoxItem("Canceled"));
rcbStatus.Items.Add(new RadComboBoxItem("Completed"));
rcbStatus.DataBind();
rcbStatus.FindItemByText("New").Selected = true;
RadComboBox rcbVrstaPrijave = (RadComboBox)userControl.FindControl("rcbVrstaPrijave");
rcbVrstaPrijave.Items.Add(new RadComboBoxItem("Odaberi vrstu prijave"));
rcbVrstaPrijave.Items.Add(new RadComboBoxItem("Usmeno"));
rcbVrstaPrijave.Items.Add(new RadComboBoxItem("Telefon"));
rcbVrstaPrijave.Items.Add(new RadComboBoxItem("E-mail"));
rcbVrstaPrijave.Items.Add(new RadComboBoxItem("Web"));
rcbVrstaPrijave.DataBind();
RadComboBox rcbPrioritet = (RadComboBox)userControl.FindControl("rcbPrioritet");
rcbPrioritet.Items.Add(new RadComboBoxItem("Low"));
rcbPrioritet.Items.Add(new RadComboBoxItem("Normal"));
rcbPrioritet.Items.Add(new RadComboBoxItem("High"));
rcbPrioritet.Items.Add(new RadComboBoxItem("Odmah"));
rcbPrioritet.DataBind();
rcbPrioritet.FindItemByText("Normal").Selected = true;
RadComboBox rcbTvrtka = (RadComboBox)userControl.FindControl("rcbTvrtka");
var tvrtkeList = (from t in db.Firma
select t).ToList();
rcbTvrtka.DataSource = from t in tvrtkeList
select new { t.idFirma, t.Naziv };
rcbTvrtka.DataTextField = "Naziv";
rcbTvrtka.DataValueField = "idFirma";
rcbTvrtka.Text = "'<%# DataBinder.Eval(Container, 'DataItem.idFirma') %>'";
rcbTvrtka.DataBind();
rcbTvrtka.Enabled = true;
RadComboBox rcbNadredeniTicket = (RadComboBox)userControl.FindControl("rcbNadredeniTicket");
rcbNadredeniTicket.Items.Add(new RadComboBoxItem("Bez nadređenog ticketa", "0"));
var nadredenTicketList = (from t in db.Ticket
select t).ToList();
if (nadredenTicketList.Count > 0)
{
rcbNadredeniTicket.DataSource = from t in nadredenTicketList
where t.Zatvoren == false
select new { t.idTicket, t.idNadredeniTicket, OpisTicketa = t.idTicket + " - " + t.Opis };
rcbNadredeniTicket.DataTextField = "OpisTicketa";
rcbNadredeniTicket.DataValueField = "idTicket";
rcbNadredeniTicket.Text = "'<%# DataBinder.Eval(Container, 'DataItem.idNadredeniTicket') %>'";
}
rcbNadredeniTicket.DataBind();
RadComboBox rcbPrijavio = (RadComboBox)userControl.FindControl("rcbPrijavio");
rcbPrijavio.Items.Add(new RadComboBoxItem("Bez kontakta", "0"));
rcbPrijavio.DataSource = from k in db.Kontakt
select new { k.idKontakt, kontaktNaziv = k.Ime + " " + k.Prezime };
rcbPrijavio.DataTextField = "kontaktNaziv";
rcbPrijavio.DataValueField = "idKontakt";
rcbPrijavio.Text = "'<%# DataBinder.Eval(Container, 'DataItem.idKontakt') %>'";
rcbPrijavio.DataBind();
RadComboBox rcbZaprimio = (RadComboBox)userControl.FindControl("rcbZaprimio");
rcbZaprimio.DataSource = from k in db.Kontakt
select new { k.idKontakt, kontaktNaziv = k.Ime + " " + k.Prezime };
rcbZaprimio.DataTextField = "kontaktNaziv";
rcbZaprimio.DataValueField = "idKontakt";
rcbZaprimio.Text = "'<%# DataBinder.Eval(Container, 'DataItem.idManager') %>'";
rcbZaprimio.DataBind();
rcbZaprimio.FindItemByValue(idAuthenticatedManager.ToString()).Selected = true;
rcbZaprimio.Enabled = false;
RadComboBox rcbAsset = (RadComboBox)userControl.FindControl("rcbAsset");
rcbAsset.Items.Add(new RadComboBoxItem("Bez pridruženog asseta", "0"));
var assetList = (from a in db.Asset
select a).ToList();
if (assetList.Count > 0)
{
rcbAsset.DataSource = from a in assetList
select new { a.idAsset, a.Naziv };
rcbAsset.DataTextField = "Naziv";
rcbAsset.DataValueField = "idAsset";
rcbAsset.Text = "'<%# DataBinder.Eval(Container, 'DataItem.Naziv') %>'";
rcbAsset.DataBind();
}
if (!e.Item.OwnerTableView.IsItemInserted)
{
int idTicket = Convert.ToInt32(editFormItem.GetDataKeyValue("idTicket"));
ticket = db.Ticket.SingleOrDefault(t => t.idTicket == idTicket);
double sumaVremena = 0;
var tickets = from d in db.Daily
where d.idTicket == idTicket
select d;
foreach (var ticketDaily in tickets)
{
sumaVremena += ticketDaily.EfektivnoSati;
}
TextBox txtUtrosenoVrijeme = (TextBox)userControl.FindControl("txtUtrosenoVrijeme");
txtUtrosenoVrijeme.Text = sumaVremena.ToString();
string tip = ticket.Tip;
rcbTip.Items.FindItemByText(tip).Selected = true;
string status = ticket.Status;
rcbStatus.Items.FindItemByText(status).Selected = true;
string vrstaPrijave = ticket.VrstaPrijave;
rcbVrstaPrijave.Items.FindItemByText(vrstaPrijave).Selected = true;
string prioritet = ticket.Prioritet;
rcbPrioritet.Items.FindItemByText(prioritet).Selected = true;
int idTvrtka = ticket.idFirma;
rcbTvrtka.FindItemByValue(idTvrtka.ToString()).Selected = true;
int kontakt = Convert.ToInt32(ticket.idKontakt);
if (ticket.idKontakt == null)
{
rcbPrijavio.Items.FindItemByValue("0").Selected = true;
}
else
{
rcbPrijavio.Items.FindItemByValue(kontakt.ToString()).Selected = true;
}
int manager = Convert.ToInt32(ticket.idManager);
rcbZaprimio.Items.FindItemByValue(manager.ToString()).Selected = true;
int nadredeniTicket = Convert.ToInt32(ticket.idNadredeniTicket);
if (ticket.idNadredeniTicket == ticket.idTicket)
{
rcbNadredeniTicket.Items.FindItemByValue("0").Selected = true;
}
else
{
rcbNadredeniTicket.Items.FindItemByValue(nadredeniTicket.ToString()).Selected = true;
}
var ticketAssetCount = from ta in db.TicketAsset
where ta.idTicket == idTicket
select ta;
if (ticketAssetCount.Count() > 0)
{
ticketAsset = db.TicketAsset.SingleOrDefault(ta => ta.idTicket == idTicket);
int asset = Convert.ToInt32(ticketAsset.idAsset);
rcbAsset.Items.FindItemByValue(asset.ToString()).Selected = true;
}
else
{
rcbAsset.Items.FindItemByValue("0").Selected = true;
}
}
}
}
My question is how can I fill ComboBoxes depending of the selection in the first ComboBox, but within the ItemDataBound event?
Any help would be appreciated!
Regards,
Hrvoje