Witam,
mam problem z ktorym sie glowie i nie moge go rozwiazac.
Jest to moj pierwszy projekt gdyz dopiero sie ucze, wiec moge robic to wszystko troche "lapotologicznie" .
Ok, Wiec tak.
Mam Form1 na ktorym mam dataGridView oraz przycisk. Kiedy zaznacze wiersz i klikne na przycisk zmieniam status w drugiej kolumnie z "In" na "On Test" i na odwrot. Wszystko to zmieniam w bazie.
Teraz, jesli zmienie ze statusu "On Test" na "In" pojawienia sie nowy formularz w ktorym trzeba wpisac kilka informacji, ktore zostaja zmienione w bazie i wyswietlone w dataGridView. Wiem jak to zrobic, ale z czym mam problem to z tym, ze..... i teraz jest to troche skomplikowane aby tlumaczyc wiec umieszcze kod:
To co mam w formie, ktory pojawia sie, kiedy przechodze ze statusu "On Test" na "In":
public void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text != "" || textBox2.Text != "" || comboBox1.Text != "")
{
BackFromCalibration.ActiveForm.Close();
Form1 access = new Form1();
access.StatusChangeTo_In();
}
else
{
MessageBox.Show("Enter data");
}
}
public void button2_Click(object sender, EventArgs e)
{
BackFromCalibration.ActiveForm.Close();
Form1 access = new Form1();
access.RefreshForm();
}
}
... jak widac zrobilem tak aby mozna bylo przejsc do Form1 i wywolac "StatusChangeTo_In()", ktory wyglada nastepujaco:
public void StatusChangeTo_In()
{
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (dataGridView1.Rows[row.Index].Selected == true)
{
if (dataGridView1.Rows[row.Index].Cells[2].Value.Equals("On Test"))
{
dataGridView1.Rows[row.Index].Cells[2].Value = "In";
//button8.Text = dataGridView1.Rows[row.Index].Cells[1].Value.ToString();
int rowIndex = row.Index + 1;
string onTestUpdate = "UPDATE CalibrationRegister SET Status = 'In' WHERE RTLG = " + rowIndex;
SqlCeConnection cs = new SqlCeConnection(@"DataSource = |DataDirectory|\Database.sdf");
SqlCeCommand cmd = new SqlCeCommand(onTestUpdate, cs);
cs.Open();
cmd.ExecuteNonQuery();
cs.Close();
this.RefreshForm();
Dispose_of_mark();
}
}
}
...jak widac tutaj powinno zostac zmienione na "In" i tyle. A co sie dzieje to to, ze program przechodzi, tylko do tego momentu:
public void StatusChangeTo_In()
{
foreach (DataGridViewRow row in dataGridView1.Rows)
....po czym przechodzi do kodu z przycisku w ktorym jest:
private void button8_Click(object sender, EventArgs e)
{
//string calibrationStatus;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (dataGridView1.Rows[row.Index].Selected == true)
{
if (dataGridView1.Rows[row.Index].Cells[2].Value.Equals("In"))
{
dataGridView1.Rows[row.Index].Cells[2].Value = "On Test";
//button8.Text = dataGridView1.Rows[row.Index].Cells[1].Value.ToString();
int rowIndex = row.Index + 1;
string onTestUpdate = "UPDATE CalibrationRegister SET Status = 'On Test' WHERE RTLG = " + rowIndex;
SqlCeConnection cs = new SqlCeConnection(@"DataSource = |DataDirectory|\Database.sdf");
SqlCeCommand cmd = new SqlCeCommand(onTestUpdate, cs);
cs.Open();
cmd.ExecuteNonQuery();
cs.Close();
DialogResult dialogResult = MessageBox.Show("Would you like to send email for qutation?", "Quotation", MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes)
{
}
else if (dialogResult == DialogResult.No)
{
}
}
else
{
{
BackFromCalibration returnedForm = new BackFromCalibration();
returnedForm.ShowDialog();
...przez ten kod przechodzi bez problemu i program konczy swoje dzialanie...
Sumujac, program nie przechodzi przez kod w StatusChangeTo_In(), tylko przechodzi do kodu z przycisku.
Czy moze ktos wie co moze byc nie tak? Domyslam sie, ze narobilem bledow, ktore pewnie gryza sie z zasadami programowania w C#. Dopiero sie ucze, wiec nie bijcie kijami :)....
Z gory dzieki za pomoc.