使用DataGridView从另一个表单在TextBox中显示数据库信息

时间:2014-12-20 19:32:30

标签: c# mysql winforms datagridview

我正在尝试将我的MySQL数据库中的信息(用户评论)显示为另一种形式的文本框。我正在使用datagridview来选择UID以识别注释所针对的用户。我的代码在Comment表单的load事件中,就像这样......

    try
        {
            // Check if a row is selected.
            string cRow = admin.gridClients.CurrentRow.Cells[0].Value.ToString();
            string Query = "SELECT Admin_Com FROM cpr_clients WHERE Client_ID='" + cRow + "';";
            MySqlConnection myConn = new MySqlConnection(strConnect);
            MySqlCommand myCmd = new MySqlCommand(Query, myConn);
            MySqlDataReader myReader;
            myConn.Open();
            myReader = myCmd.ExecuteReader();
            while (myReader.Read())
            {
                txtAdminCom.Text = myReader["Admin_Com"].ToString();
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

编辑:我已经更新了我的代码。即使我选择了另一行,代码也只检索datagridview中第一行的注释。

1 个答案:

答案 0 :(得分:0)

可能您的问题是源(CurrentRow)网格视图上没有admin.gridClients。这将导致尝试访问.Cells以引发您获得的错误,因为CurrentRow == null

由于需要此值来标识frmAdminComment中的ID,请阅读源表单中的值,然后将其传递给frmAdminComment的构造函数:

private string _id;

public frmAdminComment(string id)
{
    // Initialization code you already have.

    // Set the Id for this instance.
    _id = id;
}

现在引用加载方法中的_id变量:

string Query = "SELECT Admin_Com FROM cpr_clients WHERE Client_ID='" + _id + "';";

这会在创建admin的{​​{1}}对象中检查有效值的负担。

frmAdminComment

您可能需要考虑使用// In the "admin" object. if (gridClients.CurrentRow == null) { MessageBox.Show("No CurrentRow is set in the source grid."); return; } else { // CurrentRow is set - safe to reference it. var adminComment = new frmAdminComment(gridClients.CurrentRow.Cells[0].Value.ToString()); adminComment.Show(); } 属性。它会像这样工作:

SelectedRows

请注意,如果您使用// Check if a row is selected. // In the "admin" object. if (gridClients.SelectedRows.Length == 0) { MessageBox.Show("No rows selected in the source grid."); } else { // CurrentRow is set - safe to reference it. var adminComment = new frmAdminComment(gridClients.SelectedRows[0].Cells[0].Value.ToString()); adminComment.Show(); } ,则可能需要在SelectedRows上设置属性,以便在选择模式设置为FullRowSelect的情况下,一次只能选择一行。