Exemple #1
0
		public void Test_08_SmartListControl()
		{
			SmartListControl slc = new SmartListControl();			

			Assert.IsNotNull(slc, "Smart List Control object is NULL!");
			slc.Columns.OnNew += new SmartColumnCollectionEventHandler(scc_OnNew);
			slc.Rows.OnNew +=new SmartRowCollectionEventHandler(Rows_OnNew);

			SmartColumn sc = new SmartColumn( "email", "Email Address", SmartColumnType.ReadOnly, SmartColumnDataType.Text, 300);
			Assert.IsNotNull(sc, "Smart Column object is NULL!");
			slc.Columns.Add(sc);

			SmartRow sr = new SmartRow();
			Assert.IsNotNull(sr, "Smart Row object is NULL!");
			sr.Columns.OnNew +=new SmartColumnValueCollectionEventHandler(Columns_OnNew);

			SmartColumnValue sv = new SmartColumnValue("email", "*****@*****.**");
			Assert.IsNotNull(sv, "Smart Column Value object is NULL!");

			sr.Columns.Add(sv);

			slc.Rows.Add(sr);

			Assert.IsTrue(slc.Rows[0].Columns["email"].ColumnValue.ToString() == "*****@*****.**",
				"Email Address does not match !!");

		}
Exemple #2
0
		/// <summary>
		/// This method will add the LDAP entry to the list
		/// </summary>
		/// <param name="member">The LDAP entry to be added</param>
		private void AddLdapMemberToList( LdapSearchResult member )
		{
			// Make sure we have not already added this to the list
			if ( m_listView.Rows.ContainsValue("email", member.DisplayName) == false )
			{
				if ( member != null )
				{
					SmartRow rc = new SmartRow((member.ResultType == LdapSearchResultType.Group ? 0 : 2));
					if ( member.DomainAccount == "[No Domain Account]" )
					{
						rc.IconNumber = 1;
						m_numberInvalid++;
					}
					SmartColumnValue scv1 = new SmartColumnValue("email", member.DisplayName);
					SmartColumnValue scv2 = new SmartColumnValue("role",m_defValue);
					rc.Columns.Add(scv1);
					rc.Columns.Add(scv2);
					rc.Tag = member;
					m_listView.Rows.Add(rc);
				}
			}
			pbMain.Value += 1;
			if ( pbMain.Value >= 100 )
				pbMain.Value = 50;
			Application.DoEvents();
		}
		/// <summary>
		/// The control has been selected.
		/// </summary>
		/// <param name="row">The row to show the control</param>
		private void ControlSelected(SmartRow row)
		{
			m_selected = row;
			foreach(SmartColumn column in m_columns)
			{
				switch( column.ColumnType )
				{
					case SmartColumnType.DropDown:
						// Set the tag before setting the text as the combo selectindex change
						// event is fired and therefore update the wrong column value.
						((ComboBox)m_controls[column.Name]).Visible = false;
						((ComboBox)m_controls[column.Name]).Tag = row.Columns[column.Name];
						((ComboBox)m_controls[column.Name]).Text = row.Columns[column.Name].ColumnValue.ToString();

						((ComboBox)m_controls[column.Name]).Visible = true;
						break;
				}
			}
		}
		/// <summary>
		/// A row column has been updated
		/// </summary>
		/// <param name="row">The row to be added</param>
		private void RowModified(SmartRow row)
		{
			if ( row.IndexPosition > -1 )
			{
				ListViewItem lvi = m_listView.Items[row.IndexPosition];
				lvi.Text = row.Columns[0].ColumnValue.ToString();
				for( int i = 1; i < m_columns.Count; i++ )
				{
					if ( row.Columns.IndexOf(m_columns[i].Name) > -1 )
					{
						bool found = false;
						if ( m_columns[i].ColumnType != SmartColumnType.ReadOnly )
						{
							// Now check that the value is in the default list								
							foreach( object defValue in m_columns[i].GetDefaultValues() )
							{
								if ( defValue.ToString() == row.Columns[m_columns[i].Name].ColumnValue.ToString() )
								{
									found = true;
									break;
								}
							}
						}
						else
							found = true;
						if ( found )
							lvi.SubItems[m_columns[i].IndexPosition].Text = row.Columns[m_columns[i].Name].ColumnValue.ToString();
					}
				}	
			}
			else
				RowAdded(row);
		}
		/// <summary>
		/// A row column has been updated
		/// </summary>
		/// <param name="row">The row to be added</param>
		private void ImageChange(SmartRow row)
		{
			if ( row.IndexPosition > -1 )
			{
				ListViewItem lvi = m_listView.Items[row.IndexPosition];
				lvi.ImageIndex = row.IconNumber;
			}
		}
		/// <summary>
		/// Remove the row from the view
		/// </summary>
		/// <param name="row">The row to be removed</param>
		private void RowRemoved(SmartRow row)
		{
			if( row.IndexPosition > -1 )
			{
				m_listView.Items.RemoveAt(row.IndexPosition);
				// Work out the index positions
				int newPos = row.IndexPosition;
				bool isNow = false;
				// TODO May need to change this logic when the row sort is used.
				for( int i = 0; i < m_rows.Count; i++ )
				{
					SmartRow c = m_rows[i];
					if ( c.IndexPosition > newPos )
					{
						isNow = true;
					}
					if ( isNow )
					{
						c.IndexPosition = newPos;
						newPos++;
					}
				}
			}
		}
		/// <summary>
		/// A row has been added.
		/// </summary>
		/// <param name="row">The row to be added</param>
		private void RowAdded(SmartRow row)
		{
			ListViewItem lvi = new ListViewItem();
			if ( row.Columns.Count > 0 )
			{
				lvi.Text = row.Columns[0].ColumnValue.ToString();
				lvi.Tag = row;
				if ( row.IconNumber > -1 && m_ImageList != null)
					lvi.ImageIndex = row.IconNumber;
				if ( row.Columns.Count > 1 )
				{
					// TODO : If read only type and the column is missing from SmartRow we need to add the default one if set in SmartColumn
					for( int i = 1; i < m_columns.Count; i++ )
					{
						if ( row.Columns.IndexOf(m_columns[i].Name) > -1 )
						{
							bool found = false;
							if ( m_columns[i].ColumnType != SmartColumnType.ReadOnly )
							{
								// Now check that the value is in the default list								
								foreach( object defValue in m_columns[i].GetDefaultValues() )
								{
									if ( defValue.ToString() == row.Columns[m_columns[i].Name].ColumnValue.ToString() )
									{
										found = true;
										break;
									}
								}
							}
							else
								found = true;
							if ( found )
								lvi.SubItems.Add(row.Columns[m_columns[i].Name].ColumnValue.ToString());
						}
					}					
				}
				m_listView.Items.Add(lvi);
				row.IndexPosition = lvi.Index;
			}
		}