无法通过其他形式搜索数据吗?

时间:2018-10-11 15:11:26

标签: c# sql-server-2012

我使用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中的搜索方法[是用户控件]

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.

显示消息框,但datagridview不刷新。

我要搜索的TEXTBOX填充字符串属于主表单,而按钮Search也属于主表单。搜索方法和datagridview属于@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然后单击按钮时,它将字符串@Admin发送给child中的txtsearch,然后按上述代码调用child中的Searching方法。我需要datagridview来刷新用户状态为@Admin的数据。

现在,代码也同时以主要形式和子形式读取。我上面提到的测试消息框告诉我,它以@Admin找到了多少行。

表示该代码有效。

问题在于datagridview无法刷新我需要的数据。

0 个答案:

没有答案