0
Answer

Datagridview row not adding automatically when data fetched from other form

ullas K

ullas K

11y
1.7k
1
i have a datagridview in Form1  with columns Sl.No , Book no,Book name ,issue date, due date.
when i Enter a book no in Book No column the all the other details of the books
 are populated in other columns of datagridview and a new row is added where
 i can enter other book no to get its details displayed and so on .
For this to happen i am writing my code in Cell Value changed event of datagridview
My code is

private void dataGridViewEx1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == 1)
            {
                if (dataGridViewEx1.Rows[e.RowIndex].Cells[1].Value != null)
                {

                    con = db.open();
                    BookNumber = dataGridViewEx1.CurrentRow.Cells[1].Value.ToString();
                   
                    SqlDataAdapter adp = new SqlDataAdapter("SELECT E_NAME FROM BOOKS WHERE BOOK_NO='" + BookNumber.ToString() + "' ", con);

                    DataSet ds = new DataSet();
                    adp.Fill(ds, "s");
                   
                    if (ds.Tables["s"].Rows.Count >= 1)
                    {
                        dataGridViewEx1.CurrentRow.Cells[2].Value = ds.Tables["s"].Rows[0].ItemArray[0];
                       
                        SendKeys.Send("{TAB}");
                        SendKeys.Send("{TAB}");
                        SendKeys.Send("{TAB}");

                        dataGridViewEx1.CurrentRow.Cells[3].Value = DateTime.Now;
                        dataGridViewEx1.CurrentRow.Cells[4].Value = DateTime.Now.AddDays(holddays);
                    }
                    else
                    {
                        MessageBox.Show("No Such Book Exists.Please check the Book Number", "easyLib", MessageBoxButtons.OK);
                        SendKeys.Send("{left}");
                    }
                    db.close();
                }
            }

        }

This is working fine.

Now if i do not know the book No means i have written code to display all the book No ,Book Name details
 in other form(Say FORM2)
when i press F1 key in Book No column in Form1
and from form2 i select the book no and when i press enter that book no should be displayed in my Form1 book no column.I was able to do that.For that My code in Form1 is

internal void PopulateDGVEX1Row(string prodCode )
        {
         
                    con = db.open();

                    dataGridViewEx1.CurrentRow.Cells[1].Value = prodCode.ToString();

                    SqlDataAdapter adp = new SqlDataAdapter("SELECT E_NAME FROM BOOKS WHERE BOOK_NO='" + prodCode.ToString() + "' ", con);

                    DataSet ds = new DataSet();
                    adp.Fill(ds, "s");
                    if (ds.Tables["s"].Rows.Count >= 1)
                    {

                      //  dataGridViewEx1.CurrentRow.Cells[1].Value = ds.Tables["s"].Rows[0].ItemArray[0];
                        dataGridViewEx1.CurrentRow.Cells[2].Value = ds.Tables["s"].Rows[0].ItemArray[0];
                        SendKeys.Send("{TAB}");
                        SendKeys.Send("{TAB}");
                        SendKeys.Send("{TAB}");
                        dataGridViewEx1.CurrentRow.Cells[3].Value = DateTime.Now;
                        dataGridViewEx1.CurrentRow.Cells[4].Value = DateTime.Now.AddDays(holddays);
                    }
                    else
                    {
                        MessageBox.Show("No Such Book Exists.Please check the Book Number", "easyLib", MessageBoxButtons.OK);
                        SendKeys.Send("{left}");
                    }

                    dataGridViewEx1.RefreshEdit();

                    db.close();
               
        }

and in Form2 my code is

private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.F1)
            {
                prodCode = dataGridView1.CurrentRow.Cells[0].Value.ToString();
                f1.PopulateDGVEX1Row(prodCode);
              
                this.Dispose();
                this.Close();
             

            }
        }


I am getting the Book No in Form1 and its details in other Columns.But My problem is a new row is not added in Form1 when i am getting book no from  Form2 unless i enter any value in a datagridview cell in form1.(When i enter a Book No in Column1 a new row is added and i was able to add another book no).How can i make it add a new row automatically to datagridview in Form1 when i get book no from other form(Form2).ie i should be able to work in both ways.If i know the book no it's ok but for those which i do not know i should fetch it from other form and should get a new row added where i can enter the known book no at the  same time.

How can i do this .I Have'nt received an apt solution yet
Thanks in advance