Earlier today I asked a question as a guest (whoops) regarding my Database program. I could not comment nor post again asking for further advice from the people that answered my question. I have worked on the advice given to me in that answer which can be seen here; Database Connection Program With HR Functionality
I am still looking for advice on my further classes, something I cannot ask for in the previous question. Being completely new to CodeReview, I shall post again in the hope I can still find advice on my code, however if this is the wrong thing to do then please do notify me.
User Selection
public partial class UserSelection : Page
{
public UserSelection()
{
InitializeComponent();
dataGrid.CanUserAddRows = false;
string username = Environment.UserName;
}
/***
*
* Take all the data from the DataAccessor method FillDataGrid() and Trim() white space
*
***/
private void FillDataGrid(object sender, RoutedEventArgs e)
{
DataAccessor da = new DataAccessor();
DataTable dt = da.FillDataGrid();
foreach (DataRow dr in dt.Rows)
{
if (!dr.IsNull("em_netname"))
{
dr["em_netname"] = dr["em_netname"].ToString().Trim();
}
if (!dr.IsNull("em_dept"))
{
dr["em_dept"] = dr["em_dept"].ToString().Trim();
}
if (!dr.IsNull("em_name"))
{
dr["em_name"] = dr["em_name"].ToString().Trim();
}
if (!dr.IsNull("em_init"))
{
dr["em_init"] = dr["em_init"].ToString().Trim();
}
}
dataGrid.ItemsSource = dt.AsDataView();
}
/***
*
* Load the user's image from the S drive, if no image exists load noimage.png
*
***/
private void LoadUserImage(object sender, SelectionChangedEventArgs e)
{
try
{
DataRowView dataRow = (DataRowView)dataGrid.SelectedItem;
string username = dataRow.Row.ItemArray[2].ToString();
userImage.Source = new BitmapImage(new Uri(@"S:\Picture\"+username+".jpg")); //"
}
catch
{
userImage.Source = new BitmapImage(new Uri(@"C:\Users\DanD\Desktop\noimage.png"));
}
}
/***
*
* On clicking the HR button, load the HRsystem with the desired person
*
***/
private void hrButton_Click(object sender, RoutedEventArgs e)
{
DataAccessor da = new DataAccessor();
DataRowView dataRow = (DataRowView)dataGrid.SelectedItem;
if (dataRow != null)
{
Properties.Settings.Default.UserID = dataRow.Row.ItemArray[0].ToString(); // Add the selected Users ID to the properties settings file
Properties.Settings.Default.Save();
da.SetUserDetails();
NavigationService.Navigate(new Uri(@"View/HRSystem/HRSystem.xaml", UriKind.Relative));
} else
{
MessageBox.Show("Please Select a User!");
}
}
/***
*
* Chane the names of the existing columns, called when the columns are generated
*
***/
private void ChangeColumnNames(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
if (e.PropertyName.StartsWith("em_pplid"))
{
e.Column.Header = "ID";
}
if (e.PropertyName.StartsWith("em_name"))
{
e.Column.Header = "Name";
}
if (e.PropertyName.StartsWith("em_netname"))
{
e.Column.Header = "Net Name";
}
if (e.PropertyName.StartsWith("em_init"))
{
e.Column.Header = "Initials";
}
if (e.PropertyName.StartsWith("em_dept"))
{
e.Column.Header = "Department";
}
}
/***
*
* Search the grid based on which radio button is selected, called when text is entered into the text box
*
***/
private void SearchGrid(object sender, TextChangedEventArgs e)
{
DataView dv = dataGrid.ItemsSource as DataView;
if (nNameRad.IsChecked == true)
{
dv.RowFilter = "em_netname LIKE '%" +searchBox.Text+ "%'";
}
if (deptRad.IsChecked == true)
{
dv.RowFilter = "em_dept LIKE '%" + searchBox.Text + "%'";
}
if (sNameRad.IsChecked == true)
{
dv.RowFilter = "em_name LIKE '%" + searchBox.Text + "%'";
}
if (initRad.IsChecked == true)
{
dv.RowFilter = "em_init LIKE '%" + searchBox.Text + "%'";
}
}
private void AddEmployee(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri(@"View/HRSystem/AddEmployee.xaml", UriKind.Relative));
}
}
Data Accessor
class DataAccessor
{
/***
*
* Select all of the valid users for use by the DataGrid in UserSelection.xaml
*
***/
public DataTable FillDataGrid()
{
string constr = ConfigurationManager.ConnectionStrings["dbfString"].ConnectionString;
using (OleDbConnection dbfCon = new OleDbConnection(constr))
{
try
{
dbfCon.Open();
DataTable dTable = new DataTable();
OleDbCommand MyQuery = new OleDbCommand("SELECT em_pplid, em_name, em_netname, em_init, em_dept FROM employs WHERE em_netname NOT LIKE '' AND em_type != 2", dbfCon);
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(MyQuery);
dataAdapter.Fill(dTable);
return dTable;
}
catch (OleDbException)
{
throw;
}
}
}
/***
*
* Select the user's details and place into a list<String> for use by the HRsystem
*
***/
public List<string> SetUserDetails()
{
var userID = Properties.Settings.Default.UserID;
string constr = ConfigurationManager.ConnectionStrings["dbfString"].ConnectionString;
using (OleDbConnection dbfCon = new OleDbConnection(constr))
{
try
{
dbfCon.Open();
var cmdString = string.Format("SELECT em_surname, em_name, em_netname, em_init, em_dept, em_title FROM employs WHERE em_pplid = {0};", userID);
OleDbCommand dbfCmd = new OleDbCommand(cmdString, dbfCon);
OleDbDataReader myReader = dbfCmd.ExecuteReader();
List<string> listUser = new List<string>();
while (myReader.Read())
{
listUser.Add(myReader[0].ToString()); //Surname
listUser.Add(myReader[1].ToString()); //Name
listUser.Add(myReader[2].ToString()); //Netname
listUser.Add(myReader[3].ToString()); //Initials
listUser.Add(myReader[4].ToString()); //Department
listUser.Add(myReader[5].ToString()); //Job Title
return listUser;
}
}
catch (OleDbException)
{
throw;
}
}
return null;
}
}