Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
C# 当用户单击一个DataTable的行时,如何显示另一个DataTable以及数据库中的数据?_C#_Visual Studio_Winforms - Fatal编程技术网

C# 当用户单击一个DataTable的行时,如何显示另一个DataTable以及数据库中的数据?

C# 当用户单击一个DataTable的行时,如何显示另一个DataTable以及数据库中的数据?,c#,visual-studio,winforms,C#,Visual Studio,Winforms,我有两个具有多对多关系的表,因此我创建了另一个具有这两个表ID的表。 在我的第一个表单中,我列出了Events表中的记录,当用户单击visible datatable的记录时,我想向用户显示新表中的相应数据,我的代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.

我有两个具有多对多关系的表,因此我创建了另一个具有这两个表ID的表。 在我的第一个表单中,我列出了Events表中的记录,当用户单击visible datatable的记录时,我想向用户显示新表中的相应数据,我的代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace CW2
{

    public partial class EditEventForm : Form
    {
        DBAccess dBAccess = new DBAccess();
        DataTable dtUsers = new DataTable();
        public EditEventForm()
        {
            InitializeComponent();
        }

        private void buttonBack_Click(object sender, EventArgs e)
        {
            this.Hide();
            MenuForm form = new MenuForm();
            form.Show();
        }

        private void EditEventForm_Load(object sender, EventArgs e)
        {
            dataGridView2.Hide();
            String query = "Select * from Event";
            dBAccess.readDatathroughAdapter(query, dtUsers);
            dataGridView1.DataSource = dtUsers;
            dBAccess.closeConn();
        }

        private void buttontransfertoDatabase_Click(object sender, EventArgs e)
        {
            String query = "Select * from Event";
            int changes = dBAccess.executeDataAdapter(dtUsers, query);
            MessageBox.Show("You made " + changes + " changes");

        }

        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            DataTable dt = new DataTable();

            dataGridView2.Show();
            DataGridViewRow row = dataGridView1.Rows[e.RowIndex];
            int eventID = int.Parse(row.Cells[0].Value.ToString());

            String query = ("Select * from Event_Contacts where EventID=@eventID");
            dBAccess.executeDataAdapter(dt,query);
            dataGridView2.DataSource = dt;
            dBAccess.closeConn();
        }
    }
}
当我按如下方式执行时,我得到一个错误:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace CW2
{

    public partial class EditEventForm : Form
    {
        DBAccess dBAccess = new DBAccess();
        DataTable dtUsers = new DataTable();
        public EditEventForm()
        {
            InitializeComponent();
        }

        private void buttonBack_Click(object sender, EventArgs e)
        {
            this.Hide();
            MenuForm form = new MenuForm();
            form.Show();
        }

        private void EditEventForm_Load(object sender, EventArgs e)
        {
            dataGridView2.Hide();
            String query = "Select * from Event";
            dBAccess.readDatathroughAdapter(query, dtUsers);
            dataGridView1.DataSource = dtUsers;
            dBAccess.closeConn();
        }

        private void buttontransfertoDatabase_Click(object sender, EventArgs e)
        {
            String query = "Select * from Event";
            int changes = dBAccess.executeDataAdapter(dtUsers, query);
            MessageBox.Show("You made " + changes + " changes");

        }

        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            DataTable dt = new DataTable();

            dataGridView2.Show();
            DataGridViewRow row = dataGridView1.Rows[e.RowIndex];
            int eventID = int.Parse(row.Cells[0].Value.ToString());

            String query = ("Select * from Event_Contacts where EventID=@eventID");
            dBAccess.executeDataAdapter(dt,query);
            dataGridView2.DataSource = dt;
            dBAccess.closeConn();
        }
    }
}
System.Data.SqlClient.SqlException:'必须声明标量变量“@eventID”。'


请帮我解决这个问题

不确定什么是
DBAccess()
,但如果您使用的是
DataAdapter
,则需要指定@eventID参数是什么

DataAdapter.SelectCommand.Parameters.AddWithValue("@eventID", yourEventIDValue);
卡恩奇

String query = "Select * from Event_Contacts where EventID=" + eventID.ToString();

我添加了字符串query=“Select*from Event_Contacts where EventID=“+EventID.ToString()”;但它现在显示一个空的网格,不再显示错误,它只是一个空白网格view@HimashiWeerasinghe您的查询是否返回任何结果?