
After upgrading the controls from version 2012.3.1211.40 to the latest 2013.3.1127.40 I am seeing an issue only on one type of computer (Panasonic Toughbooks) where after you select an item from a RadDropDownList with a DropDownStyle set to DropDownList you will get a speech bubble with the value that you selected in it. If the RadDropDownList box’s style is set to DropDown, it does not exhibit the same issue and works as expected. I created a basic sample program using just the controls in the two styles with no additional code and I received the same results (see Dropdownlist attachment). Copying over the Telerik Demo programs I get the same result.
I have tried my little program on several Panasonic computers with the same results but on other non-Panasonic computers, they act normally. Any Ideas as to what may be going on since the old version of the controls worked fine.
John



private
void InitializeGrid()
{
ColumnGroupsViewDefinition view = new ColumnGroupsViewDefinition();
view.ColumnGroups.Add(
new GridViewColumnGroup("Customer Contact"));
view.ColumnGroups.Add(
new GridViewColumnGroup("Details"));
view.ColumnGroups[1].Groups.Add(
new GridViewColumnGroup("Address"));
view.ColumnGroups[1].Groups.Add(
new GridViewColumnGroup("Contact"));
view.ColumnGroups[0].Rows.Add(
new GridViewColumnGroupRow());
view.ColumnGroups[0].Rows[0].Columns.Add(
this.radGridView1.Columns["CompanyName"]);
view.ColumnGroups[0].Rows[0].Columns.Add(
this.radGridView1.Columns["ContactName"]);
view.ColumnGroups[0].Rows[0].Columns.Add(
this.radGridView1.Columns["ContactTitle"]);
view.ColumnGroups[1].Groups[0].Rows.Add(
new GridViewColumnGroupRow());
view.ColumnGroups[1].Groups[0].Rows[0].Columns.Add(
this.radGridView1.Columns["Address"]);
view.ColumnGroups[1].Groups[0].Rows[0].Columns.Add(
this.radGridView1.Columns["City"]);
view.ColumnGroups[1].Groups[0].Rows[0].Columns.Add(
this.radGridView1.Columns["Country"]);
view.ColumnGroups[1].Groups[1].Rows.Add(
new GridViewColumnGroupRow());
view.ColumnGroups[1].Groups[1].Rows[0].Columns.Add(
this.radGridView1.Columns["Phone"]);
view.ColumnGroups[1].Groups[1].Rows[0].Columns.Add(
this.radGridView1.Columns["Fax"]);
radGridView1.ViewDefinition = view;
}
The last line produces the error object reference not set to an instance of an object. Do you know what I'm doing wrong?
Thanks.
public partial class EulaViewerView : UserControl{ #region private Members /// <summary> /// The BackgroundWorker that is used to load the country list asynchronous. /// </summary> private BackgroundWorker _asyncWorker; #endregion #region Constructor /// <summary> /// The constructor of the class. /// </summary> public EulaViewerView() { InitializeComponent(); this.Localize(); CountrySelector.DropDownListElement.AutoCompleteSuggest.DropDownList.VisualItemFormatting += DropDownList_VisualItemFormatting; this.InitializeControl(); } #endregion #region BackgroundWorker methods /// <summary> /// BackgroundWorker finished event handling. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void asyncWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { this.Cursor = Cursors.Hand; } /// <summary> /// Adding in background created DropDownList items to the DropDonwList. /// </summary> /// <param name="sender">The instance of the BackgroundWorker.</param> /// <param name="e">The BackgroundWorker event arguments.</param> private void asyncWorker_ProgressChanged(object sender, ProgressChangedEventArgs e) { if (e.UserState is RadListDataItem) this.CountrySelector.Items.Add(e.UserState as RadListDataItem); } /// <summary> /// Loads the country list and create DropDownList items /// </summary> /// <param name="sender">The instance of the BackgroundWorker.</param> /// <param name="e">The BackgroundWorker event arguments.</param> private void asyncWorker_DoWork(object sender, DoWorkEventArgs e) { CountryList countyList = new CountryList(); BackgroundWorker worker = sender as BackgroundWorker; foreach (Country country in countyList.Countries) { if (country.CountryName != "") { string imagekey = this.GetImageKey(country); if (!string.IsNullOrEmpty(imagekey)) { RadListDataItem item = new RadListDataItem(country.CountryName); item.Image = this.imageList1.Images[this.GetImageKey(country)]; item.Value = country; item.ForeColor = Color.Black; if (EulaInfo.Instance.CountrySelected && country.CountryName == EulaInfo.Instance.SelectedCountry.CountryName) item.Selected = true; worker.ReportProgress(1, item); } } } } #endregion #region helper methods /// <summary> /// Formatting event handling for DropDownListItems to add country flag in autocomplete list. /// </summary> /// <param name="sender">The sender.</param> /// <param name="args">The arguments.</param> private void DropDownList_VisualItemFormatting(object sender, VisualItemFormattingEventArgs args) { args.VisualItem.Image = this.imageList1.Images[this.GetImageKey((Country)args.VisualItem.Data.Value)]; } /// <summary> /// Inits the control components and starts loading the countries in background. /// </summary> private void InitializeControl() { this.Cursor = Cursors.WaitCursor; this.CountrySelector.DropDownListElement.AutoCompleteSuggest.SuggestMode = SuggestMode.Contains; this.CountrySelector.DropDownListElement.TextBox.StretchVertically = true; _asyncWorker = new BackgroundWorker(); _asyncWorker.DoWork += asyncWorker_DoWork; _asyncWorker.ProgressChanged += asyncWorker_ProgressChanged; _asyncWorker.RunWorkerCompleted += asyncWorker_RunWorkerCompleted; _asyncWorker.WorkerReportsProgress = true; _asyncWorker.RunWorkerAsync(); } /// <summary> /// Gets the image key for the given country in imageList1. /// </summary> /// <param name="country"></param> /// <returns></returns> private string GetImageKey(Country country) { string retval = string.Empty; if (!string.IsNullOrEmpty(country.EnglishName)) retval = "flag_" + country.EnglishName + ".png"; return retval; } #endregion #region Control event handling methods /// <summary> /// Syncronize relevant control states to EulaInfo instance. /// </summary> /// <param name="sender">The control instance.</param> /// <param name="e">The event arguments.</param> private void AgreeEulaActor_CheckedChanged(object sender, EventArgs e) { EulaInfo.Instance.Accepted = this.AgreeEulaActor.Checked; } /// <summary> /// Syncronize relevant control states to EulaInfo instance. /// </summary> /// <param name="sender">The control instance.</param> /// <param name="e">The event arguments.</param> private void DisagreeEulaActor_CheckedChanged(object sender, EventArgs e) { EulaInfo.Instance.Accepted = this.AgreeEulaActor.Checked; } /// <summary> /// Print out the actually shown eula. /// </summary> /// <param name="sender">The control instance.</param> /// <param name="e">The event arguments.</param> private void btnPrintActor_Click(object sender, EventArgs e) { this.EulaReader.Print(); } /// <summary> /// Change DropDownList style and loads the embedded eula document for the selected country into the PDF reader control. /// </summary> /// <param name="sender">The DropDownList instance.</param> /// <param name="e">The event arguments.</param> private void CountrySelector_SelectedIndexChanged(object sender, Telerik.WinControls.UI.Data.PositionChangedEventArgs e) { this.Cursor = Cursors.WaitCursor; EulaInfo.Instance.SelectedCountry = this.CountrySelector.SelectedValue as Country; this.CountrySelector.DropDownListElement.ShowImageInEditorArea = true; this.CountrySelector.DropDownStyle = Telerik.WinControls.RadDropDownStyle.DropDownList; try { Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("SharePointProductInstaller.Eula." + EulaInfo.Instance.SelectedCountry.EulaID); this.EulaReader.LoadDocument(stream); this.AgreeEulaActor.Checked = EulaInfo.Instance.Accepted; this.DisagreeEulaActor.Checked = !EulaInfo.Instance.Accepted; this.btnPrintActor.Enabled = true; this.AgreeEulaActor.Enabled = true; this.DisagreeEulaActor.Enabled = true; } catch (Exception ex) { //throw ex; } finally { this.Cursor = Cursors.Default; } } /// <summary> /// Changes the DropDonwList style for text input (autocomplete mode). /// </summary> /// <param name="sender">The DropDownList instance.</param> /// <param name="e">The event arguments.</param> private void CountrySelector_MouseClick(object sender, MouseEventArgs e) { this.CountrySelector.DropDownStyle = Telerik.WinControls.RadDropDownStyle.DropDown; this.CountrySelector.DropDownListElement.ShowImageInEditorArea = false; } /// <summary> /// Checks and update DropDownList selected item when leaving. /// This is needed if control lost focus and no item was selected after entering text. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void CountrySelector_Leave(object sender, EventArgs e) { if (this.CountrySelector.SelectedValue != null && this.CountrySelector.Text != ((Country)this.CountrySelector.SelectedValue).CountryName) { var matchedItem = this.CountrySelector.Items.First(x => x.Text == this.CountrySelector.Text); if (matchedItem != null) matchedItem.Selected = true; else { this.CountrySelector.Text = ""; this.CountrySelector.SelectedItem = null; } } } private void Localize() { this.lCountryInfoHeadline.Text = Properties.Resources.EulaStepTitle; this.CountrySelector.NullText = Properties.Resources.CountrySelectorNullText; this.DisagreeEulaActor.Text = Properties.Resources.DisagreeEulaActorText; this.AgreeEulaActor.Text = Properties.Resources.AgreeEulaActorText; this.btnPrintActor.Text = Properties.Resources.btnPrintActorText; } #endregion}