I have a problem in refreshing my listview after going back to main form ! This is my listview : ID -- number -- supplier -- total -- Note
I have form Called Bills, when I press on New bill button, a new form called bill_Details open .. I added new bills and close it. after closing I added load_Values() function to refresh the listview in bills form.
private void btn_add_Click(object sender, EventArgs e)
{
Bill_Details b = new Bill_Details();
b.ShowDialog();
load_Values();//this to load the listview
}
the problem is, if total in my new bill is 10.02, and I returned from bill_Details form to bills form, a new bill record added to listview, but the total is not right ! it may appear 0 ! This is load_Values function:
public void load_Values()
{
try
{
txbSearch.Text = "";
objConn.Open();
listView1.Items.Clear();
OleDbCommand cmd = new OleDbCommand("select a.bill_Id,a.bill_Number,a.bill_Date,c.sup_Name,Sum(b.de_NetPrice),a.bill_Note from (suppliers c right JOIN bills a on c.sup_Id = a.bill_From) LEFT JOIN bill_Details b on a.bill_Id = b.bill_Id group by a.bill_Id,a.bill_Number,a.bill_Date,c.sup_Name,a.bill_Note order by a.bill_Date desc", objConn);
OleDbDataReader dataReader = cmd.ExecuteReader();
float valueAfterTax = 0, valueAfterDis = 0, summ = 0;
string filename = Application.StartupPath + "\\config.ict";
Serializer serializeFromFile = new Serializer();
settings = serializeFromFile.DeSerializeObject(filename);
valueAfterTax = float.Parse(settings.taxRate) / 100;
valueAfterDis = float.Parse(settings.disRate) / 100;
int i = 0;
while (dataReader.Read())
{
listView1.Items.Add(dataReader.GetValue(0).ToString());
listView1.Items[i].SubItems.Add(dataReader.IsDBNull(1) ? "-" : dataReader.GetValue(1).ToString());
DateTime dt = DateTime.Parse(dataReader.GetValue(2).ToString());
listView1.Items[i].SubItems.Add(dt.ToShortDateString());
listView1.Items[i].SubItems.Add(dataReader.IsDBNull(3) ? "0" : dataReader.GetString(3));
summ = (float.Parse(dataReader.IsDBNull(4) ? "0" : dataReader.GetDouble(4).ToString("n2")) * valueAfterTax) + float.Parse(dataReader.IsDBNull(4) ? "0" : dataReader.GetDouble(4).ToString("n2")) - (float.Parse(dataReader.IsDBNull(4) ? "0" : dataReader.GetDouble(4).ToString("n2")) * valueAfterDis);
listView1.Items[i].SubItems.Add(summ.ToString("n2"));
listView1.Items[i].SubItems.Add(dataReader.IsDBNull(5) ? "-" : dataReader.GetString(5));
i++;
}
objConn.Close();
}
catch (Exception er)
{
MessageBox.Show(er.Message);
}
after that it I reload bill form, the total for this record appears correctly.