Поиск данных из другой формы не работает? - PullRequest
0 голосов
/ 11 октября 2018

Я использовал C # + SQL Server 2012, Winforms.У меня есть основная форма и закрепление панели для отображения дочернего элемента:

Код для открытия дочернего элемента [usercontrol].

pncontent.Controls.Clear();

classinfo.ucon = new ProjectUserControls.U_user();
classinfo.ucon.Dock = DockStyle.Fill;   // ucon is the declare of usercontrol

pncontent.Controls.Add(classinfo.ucon);  // now the child shown already in main form panel.

Метод поиска в @U_user [это usercontrol]

public void searchingdata()
{
    if (!txtsearch.Text.Equals(""))    // this txtsearch is declared at the top to receive the string from main from textbox named txtsearchmain.
    {
        while (dgvuser.Rows.Count > 0)
        {
            dgvuser.Rows.Clear();
        }

        string data = "select tb_user.id, tb_user.UID, tb_user.EID, tb_employee.Name, tb_employee.Surname, tb_user.UserName, tb_user.Password, tb_user.Status, FORMAT(tb_user.Date,'dd-MM-yyyy') as Date from tb_user, tb_employee where tb_user.Boolean = 'True' and tb_user.EID = tb_employee.EID and (tb_user.UID LIKE'%" + txtsearch.Text + "%' or tb_user.EID LIKE'%" + txtsearch.Text + "%' or tb_user.UserName LIKE'%" + txtsearch.Text + "%' or tb_user.Password LIKE'%" + txtsearch.Text + "%' or tb_user.Status LIKE'%" + txtsearch.Text + "%' ) order by tb_user.id desc";

        DataTable dt = ClassConnection.DBFactory(data, "tbname");

        if (dt.Rows.Count > 0)
        {
                foreach (DataRow item in dt.Rows)
                {
                    int x = dgvuser.Rows.Add();
                    dgvuser.Rows[x].Cells[0].Value = item["id"].ToString();
                    dgvuser.Rows[x].Cells[1].Value = item["UID"].ToString();
                    dgvuser.Rows[x].Cells[2].Value = item["EID"].ToString();
                    dgvuser.Rows[x].Cells[3].Value = item["Name"].ToString() + " " + item["Surname"].ToString();
                    dgvuser.Rows[x].Cells[4].Value = item["UserName"].ToString();
                    dgvuser.Rows[x].Cells[5].Value = item["Password"].ToString();
                    dgvuser.Rows[x].Cells[6].Value = item["Status"].ToString();
                    dgvuser.Rows[x].Cells[7].Value = item["Date"].ToString();
                }

                MessageBox.Show(dt.Rows.Count.ToString() + " Found");//Test messagebox.
            }
            else
            {
                MessageBox.Show("Not found.","Message . . . . .");
                return;
            }
        }
        else
        {
            MessageBox.Show("Fill with Searching string.", "Message . . . . . .");
            return;
        }
}

Я протестировал его с окном сообщений

  MessageBox.Show(dt.Rows.Count.ToString() + " Found"); // you can see in the searching method.

Окно сообщений отображается, но сетка данных не обновляется.

строка ввода текста, которую я заполняю для поиска, принадлежитОсновная форма и кнопка Поиск также относятся к основной форме.Метод поиска и представление данных принадлежат к @U_user или дочерней форме.

Нажатие кнопки поиска в главной форме.

        if (!txtseaarchmain.Text.Equals(""))
        {
            if (menufrmname.Text == "user")
            {
                ProjectUserControls.U_user user = new ProjectUserControls.U_user();
                user.txtsearch.Text = txtseaarchmain.Text;//txtsearch is the textbox I declare in  the top of the @U_user child. And the txtsearchmain is the textbox receive the input in main form.
                user.searchingdata();
            }
        }

Это означает, что когда я заполняю строку @Admin в txtsearchmain в mainи затем я нажимаю кнопку, она отправляет строку @Admin в txtsearch на дочернем, а затем я вызываю метод поиска на дочернем, как упоминалось в коде.Мне нужно, чтобы сетка данных обновляла данные, где статус пользователя @ Admin.

Теперь код читается также в основных и дочерних формах обеих сторон.Тестовое окно сообщений, о котором я упоминал выше, говорит мне, что количество строк, которое он нашел как @ Admin.

Означает, что код работает.

Проблема в том, что представление данных не обновляет нужные мне данные.

...