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
}