[ programiranjeCsharp @ 02.12.2017. 16:34 ] @
Imam problema oko nekoliko stvari.
Kako da filtriram polja u datagridu kada se u textbox-u ukuca nesto, da ostane u datagridu samo ta jedna kolona gde se to nalazi.
Pokusavao sam nesto, radi pretraga samo sto se u datagridu ne pojavljuju podaci iz baze, vec samo prazne kolone.
Ne znam kako da pozovem listu sa datagridom i ubacim da se sve to filtrira. Evo koda ispod.

Hvala unapred !

private List<Servis> GetSevices(Klijent k)
{
sList = new List<Servis>();

conn.Open();

try
{
cmd = new SqlCommand();
cmd = conn.CreateCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT opisId, klijentId, datum, opis_servisa FROM opisServisa WHERE klijentId = '" + k.Id.ToString() + "'";

SqlDataReader reader;
reader = cmd.ExecuteReader();

textBoxOpis.AcceptsReturn = true;

while (reader.Read())
{
Servis s = new Servis();
s.ServisId = int.Parse(reader["opisId"].ToString());
s.KlijentId = int.Parse(reader["klijentId"].ToString());
s.Datum = reader["datum"].ToString();
s.OpisServisa = reader["opis_servisa"].ToString();
if (textBoxID.Text != string.Empty && s.KlijentId == int.Parse(textBoxID.Text))
{
sList.Add(s);
}
}
conn.Close();
}
catch (Exception err)
{
MessageBox.Show("", err.Message);
}
return sList;
}
----------------------------------------------------------------------------------------------------
private void textBox_TextChanged(object sender, TextChangedEventArgs e)
{
SqlDataAdapter da = new SqlDataAdapter("select * from opisServisa", conn);

DataTable tabela = new DataTable();

da.Fill(tabela);

try
{
DataView dv = new DataView(tabela);

dv.RowFilter = string.Format("opis_servisa LIKE '%{0}%'", textBoxPretraga.Text);

dataGridServis.ItemsSource = dv;
}
catch (Exception err)
{
MessageBox.Show("", err.Message);
}
}
[ ravni @ 03.12.2017. 07:53 ] @
Po cemu treba da se filtrira opisServisa - po klijentId ili po opis_servisa?

Taj dataGridServis - kog je tipa? Ni DataGridView ni DataGrid nemaju ItemsSource..

Probaj da stavis brejkpointe na razna mesta i vidis da li promanljive sadrze ono sto ti zelis.
[ Predrag Supurovic @ 03.12.2017. 07:57 ] @
Možda grešiš i pšristupu?

DataGrid treba da vežeš na DataSource a sva filtriranja da radiš na DataSource.

[ programiranjeCsharp @ 03.12.2017. 10:18 ] @
Treba da filtrira po polju opisu_servisa, a opisServisa je tabela.
Ovo je kod za combobox, kada se nesto izabera da prikaze sve vezano za to.
Sve ostalo radi, pokazuje podake u DataGridu kada se izabere neki korisnik.
A sto se tice pretrage ona radi, samo kada se kuca pretraga za neku rec izbacuje samo prazne kolone u kojima nema podataka. Kako da te podatke ucinim vidljivim?

private void comboBoxKlijent_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
List<Servis> servisList = new List<Servis>();
Klijent k = new Klijent();

conn.Open();

try
{
SqlDataReader reader;

cmd = new SqlCommand();
cmd = conn.CreateCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT * FROM Klijent WHERE naziv_klijenta='" + comboBoxKlijent.SelectedItem + "'";

reader = cmd.ExecuteReader();

while (reader.Read())
{
textBoxID.Text = reader["klijentId"].ToString();
textBoxNaziv.Text = reader["naziv_klijenta"].ToString();
textBoxTelefon.Text = reader["telefon"].ToString();
}

conn.Close();
}
catch (Exception err)
{
MessageBox.Show("SQL error" + err.Message);
}
try
{
k.Id = int.Parse(textBoxID.Text);
servisList = GetSevices(k);

this.dataGridServis.ItemsSource = servisList;
this.dataGridServis.DataContext = servisList;
}
catch (Exception err)
{
MessageBox.Show("" + err.Message);
}
}
[ ravni @ 04.12.2017. 08:12 ] @
Citat:
this.dataGridServis.ItemsSource = servisList;
this.dataGridServis.DataContext = servisList;

Ovde bi morao da se opredelis pa da koristis ili ItemsSource ili DataContext.
Sto se tice toga da ti se ne vidi sadrzaj - kolone liste ti verovatno pokazuju na pogresne propertije.

Uradi copy paste xaml fajla pa da vidimo.
[ programiranjeCsharp @ 04.12.2017. 16:53 ] @
Resicu nekako to na drugi nacin, samo jos mala pomoc oko ovog..
Kada izaberem u datagridu neku kolonu i hocu da je izmenim, izvrsi se izmena u svim kolonama.
U cemu gresim u ovom kodu ?

public void update(Servis s, SqlConnection conn)
{
conn.Open();
try
{
SqlCommand update = new SqlCommand();
update.Connection = conn;
update.CommandType = CommandType.Text;
update.CommandText = "update opisServisa set datum = @date, opis_servisa = @opis";

update.Parameters.AddWithValue("@date", s.Datum);
update.Parameters.AddWithValue("@opis", s.OpisServisa);

update.ExecuteNonQuery();
}
catch (Exception err)
{
MessageBox.Show("" + err.Message);
}
conn.Close();
}

--------------------------------------------------------------------------------------------------------
private void buttonIzmena_Click(object sender, RoutedEventArgs e)
{
try
{
if (dataGridServis.SelectedItem != null)
{
Servis s = (Servis)dataGridServis.SelectedItem;

if (textBoxID.Text != string.Empty)
{
s.KlijentId = int.Parse(textBoxID.Text);
s.OpisServisa = textBoxOpis.Text;
s.Datum = datePicker.Text;
s.update(s, conn);
}
else
{
MessageBox.Show("No ID");
}
}

MessageBox.Show("Izvrsili ste izmenu !");
}
catch (Exception err)
{
MessageBox.Show("", err.Message);
}

datePicker.Text = "";
textBoxOpis.Clear();
datePicker.Focus();
}
[ ravni @ 05.12.2017. 07:46 ] @
U update komandi nedostaje
WHERE klijentId =@klijentId
[ programiranjeCsharp @ 06.12.2017. 17:11 ] @
Da li je moguce kada se klikne na neko polje u datagridu i klikne dugme prikazi, da se svi podaci za to polje prikazu u pdf formatu ?