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 !!"); }
/// <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; } }