Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 我需要一种通过单击另一个表单上的datagridview来显示新表单上记录的方法_Mysql_Datagridview_Combobox_Openform - Fatal编程技术网

Mysql 我需要一种通过单击另一个表单上的datagridview来显示新表单上记录的方法

Mysql 我需要一种通过单击另一个表单上的datagridview来显示新表单上记录的方法,mysql,datagridview,combobox,openform,Mysql,Datagridview,Combobox,Openform,我有一个带有datagridview的表单,显示库存。库存表有一个名为unitid的字段 我希望它能够正常工作,当我从inventory datagridview中选择一条记录时,它必须从frminventorydetails中打开另一条记录,并在我选择的记录的文本框和组合框中显示所有字段 我有它的工作,但问题是组合框。它不会在组合框中显示正确的值。当加载详细信息表单时,我有一个方法来加载带有units表中的值的组合框。但是,当加载详细信息表单时,它不会转到相应的displaymember 当我

我有一个带有datagridview的表单,显示库存。库存表有一个名为unitid的字段

我希望它能够正常工作,当我从inventory datagridview中选择一条记录时,它必须从frminventorydetails中打开另一条记录,并在我选择的记录的文本框和组合框中显示所有字段

我有它的工作,但问题是组合框。它不会在组合框中显示正确的值。当加载详细信息表单时,我有一个方法来加载带有units表中的值的组合框。但是,当加载详细信息表单时,它不会转到相应的displaymember

当我将组合框放在与库存数据网格相同的形式时,它可以完美地工作。但当组合框是另一个窗体时不起作用

  private void dginventory_KeyDown(object sender, KeyEventArgs e)
    {

        if (e.KeyCode == Keys.Enter)
        {
            try
            {
                string getdetails = @"select * from tblinventory where
                tblinventory.invid='" + Convert.ToInt32(dginventory.CurrentRow.Cells[0].Value.ToString()) + "'";

                performqueries.singleResult(getdetails);

                frmviewinvdetails invdetopen = new frmviewinvdetails();

                if (performqueries.dt.Rows.Count > 0)
                {
                    invdetopen.txtinvid.Text = performqueries.dt.Rows[0].Field<int>("invid").ToString();
                    invdetopen.txtinvcode.Text = performqueries.dt.Rows[0].Field<string>("InventoryCode").ToString();
                    invdetopen.txtInvDescription.Text = performqueries.dt.Rows[0].Field<string>("InvDescription").ToString();
                    invdetopen.txtInvShortText.Text = performqueries.dt.Rows[0].Field<string>("InvShortText").ToString();

                    //here im assigning the unitid to the selectedvalue property of the combobox in the details form.
                    invdetopen.cbunits.SelectedValue = Convert.ToInt32(performqueries.dt.Rows[0].Field<int>("unitid").ToString());

                    }

                   invdetopen.ShowDialog();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                //throw;
            }

    // this fills the combobox on the details form when it loads
    private void frmviewinvdetails_Load(object sender, EventArgs e)
    {
       SqlConfig performcrud = new SqlConfig();
        string units = "select * from tblunits";
        performcrud.fill_CBO(units, cbunits);
    }
private void dginventory\u KeyDown(对象发送方,KeyEventArgs e)
{
如果(e.KeyCode==Keys.Enter)
{
尝试
{
字符串getdetails=@“从tblinventory中选择*,其中
tblinventory.invid='“+Convert.ToInt32(dginventory.CurrentRow.Cells[0].Value.ToString())+”;
performquerys.singleResult(getdetails);
frmviewinvdetails invdetopen=新的frmviewinvdetails();
if(performquerys.dt.Rows.Count>0)
{
invdetopen.TXTIVID.Text=performquerys.dt.Rows[0]。字段(“invid”).ToString();
invdetopen.txtinvcode.Text=performquerys.dt.Rows[0]。字段(“InventoryCode”).ToString();
invdetopen.txtInvDescription.Text=performquerys.dt.Rows[0]。字段(“InvDescription”).ToString();
invdetopen.txtInvShortText.Text=performquerys.dt.Rows[0]。字段(“InvShortText”).ToString();
//在这里,我将unitid分配给详细信息表单中组合框的selectedvalue属性。
invdetopen.cbunits.SelectedValue=Convert.ToInt32(performquerys.dt.Rows[0]。字段(“unitid”).ToString();
}
invdetopen.ShowDialog();
}
捕获(例外情况除外)
{
MessageBox.Show(例如Message);
//投掷;
}
//这将在加载时填充详细信息表单上的组合框
私有void frmviewinvdetails_加载(对象发送方,事件参数e)
{
SqlConfig performcrud=new SqlConfig();
字符串单位=“从tblunits中选择*”;
性能指令填充CBO(单位,CBU单位);
}
我希望组合框为我选择的特定项目显示适当的单元描述,但它只保留在第一条记录上


如果combobox与datagrid位于同一表单上,但如果我打开一个新表单,则它不起作用。

您不显示设置
cbunits
ValueMember
DisplayMember
的代码。请确保设置了这些属性,然后设置了
combobox
数据源
您可以使用
SelectedValue

此外,这可能是一个问题:

string units = "select * from tblunits";
您必须匹配属性(显示和值)名称,因此我强烈建议在SQL中使用特定的字段名称。我不知道它是否与“*”一起工作。编辑:我测试了它,它与asterix一起工作,因此您只需要确保字段名称匹配。。同时将
数据表
用作
数据源
将是一个优势:

dt Datatable = FunctionToGetDataTable("select ID, UnitName as UnitName from tblunits");
因此,您可以使用:

invdetopen.cbunits.ValueMember = "ID";
invdetopen.cbunits.ValueMember = "UnitName";
invdetopen.cbunits.ValueMember = dt;
您应该始终能够使用断点停止代码并查看变量。如果您使用
DataTable
,您可以在调试模式下利用DataTable可视化工具(单击“dt”上方的小放大镜),并将其视为一个表


如果操作正确,只需要上面几行就可以了。

我认为invdetopen.cbunits没有正确初始化。在显示对话框之前,请检查invdetopen.cbunits.DataSource存储的数据源。