Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.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/3/apache-spark/5.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# 找不到名为ID的列。参数名称:columnName_C#_Datagridview_Oledb_Datagridviewcolumn - Fatal编程技术网

C# 找不到名为ID的列。参数名称:columnName

C# 找不到名为ID的列。参数名称:columnName,c#,datagridview,oledb,datagridviewcolumn,C#,Datagridview,Oledb,Datagridviewcolumn,我有一个更新和填充的datagridview。但是我在datagridview中的列(ID)中搜索值(returnID)的部分说“找不到名为ID的列”。 参数名称:columnName“,我似乎无法让它工作。如果有人能提供帮助,我们将不胜感激 代码: private void应用程序加载(对象发送方,事件参数e) { //TODO:这行代码将数据加载到“registrationDataSet1.TestDB”表中。您可以根据需要移动或删除它。 this.testDBTableAdapter.Fi

我有一个更新和填充的datagridview。但是我在datagridview中的列(ID)中搜索值(returnID)的部分说“找不到名为ID的列”。 参数名称:columnName“,我似乎无法让它工作。如果有人能提供帮助,我们将不胜感激

代码:

private void应用程序加载(对象发送方,事件参数e)
{
//TODO:这行代码将数据加载到“registrationDataSet1.TestDB”表中。您可以根据需要移动或删除它。
this.testDBTableAdapter.Fill(this.registrationDataSet1.TestDB);
textBox1.Select();
}
私有void DataTable_连接(对象returnName,字符串returnID)
{
弦变量;
对象变量名;
varID=textBox1.Text.Replace(@“L”和“”).ToString();
varName=returnName;
OleDbConnection OLEDB_Connection=新的OLEDB连接(“Provider=Microsoft.ACE.OLEDB.12.0;数据源=| DataDirectory | \\ Registration.accdb”);
OLEDBCOMAND updateCmd=新的OLEDBCOMAND();
尝试
{
updateCmd.CommandText=“插入TestDB([Name],[ID])值(@Name,@ID)”;
updateCmd.Parameters.AddWithValue(“@Name”,varName);
updateCmd.Parameters.AddWithValue(“@ID”,varID);
OLEDB_连接。打开();
updateCmd.Connection=OLEDB_连接;
updateCmd.ExecuteOnQuery();
OLEDB_连接。关闭();
}
抓住
{
}
textBox1.Clear();
int指数=-1;
DataGridViewRow行=DataGridView1.Rows
.Cast()
.Where(r=>r.Cells[“ID”].Value.ToString().Equals(returnID))
.First();
索引=行索引;
}
私有无效寄存器\u选择(对象发送器,按键事件参数e)
{
SqlConnection-DBConnection=newsqlconnection(“数据源=数据库;初始目录=imis;集成安全性=True”);
SqlCommand cmd=新的SqlCommand();
字符串返回值;
对象名称;
对象返回ID;
字符串txtend=textBox1.Text;
如果(e.KeyChar=='L')
{
e、 已处理=正确;
DBConnection.Open();
}
if(DBConnection.State==ConnectionState.Open)
{
如果(textBox1.Text.Length!=6)返回;
{
cmd.CommandText=(“从名称中选择姓氏+”、“+姓氏,其中id=@name”);
cmd.Parameters.Add(新的SqlParameter(“Name”,textBox1.Text.Replace(@“L”,“”));
cmd.CommandType=CommandType.Text;
cmd.Connection=DBConnection;
returnValue=cmd.ExecuteScalar()+“\t”+textBox1.Text.Replace(@“L”和“”);
returnName=cmd.ExecuteScalar();
returnID=textBox1.Text.Replace(@“L”和“”);
DBConnection.Close();
DataTable_连接(returnName,returnID.ToString());
this.testDBTableAdapter.Fill(this.registrationDataSet1.TestDB);
}
}
}

尝试给出列索引,例如
0
,而不是给出列名
ID

我发现当我测试这个时。。。 MessageBox.Show(dataGridView1.Columns[0].Name)

消息框将id列标题文本显示为“idDataGridViewTextBoxColumn”


因此,我没有引用列名“ID”,而是使用“idDataGridViewTextBoxColumn”引用它。它成功了。

您能发布您的绑定代码吗?请确保行中包含一个名为ID的列it@James,我编辑了它以显示我的全部代码。@RyanGillooly这就是问题所在,您正在SQL server数据库中查询一个不存在的ID列。@RyanGillooly没有,您正在创建一个全新的连接并直接查询数据库。如果要搜索网格视图的内容,需要通过UI组件进行搜索-请参阅示例。请在注释中提供类似建议。@RohanKandwal这是错误的,请不要建议that@AsteroidsWithWings用“请尝试”来回答也是错误的,对吗?那么这些应该放在哪里?这很好。如果你不喜欢“请试试”,你可以把它拿出来,但这与它无关@Rohan@RohanKandwal那个帖子错了。这不是一个“问题和建议”网站。(奇怪的是,“添加评论”的工具提示经常直截了当地说。它至少说明了评论的目的。)请不要鼓励这种行为。谢谢
   private void Application_Load(object sender, EventArgs e)
    {
        // TODO: This line of code loads data into the 'registrationDataSet1.TestDB' table. You can move, or remove it, as needed.
        this.testDBTableAdapter.Fill(this.registrationDataSet1.TestDB);

        textBox1.Select();
    }

    private void DataTable_Connection(object returnName, string returnID)
    {
        String varID;
        Object varName;

        varID = textBox1.Text.Replace(@"L", "").ToString();
        varName = returnName;

        OleDbConnection OLEDB_Connection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\Registration.accdb");
        OleDbCommand updateCmd = new OleDbCommand();
        try
        {
            updateCmd.CommandText = "INSERT INTO TestDB ([Name], [ID]) VALUES (@NAME, @ID)";
            updateCmd.Parameters.AddWithValue("@Name", varName);
            updateCmd.Parameters.AddWithValue("@ID", varID);
            OLEDB_Connection.Open();
            updateCmd.Connection = OLEDB_Connection;
            updateCmd.ExecuteNonQuery();
            OLEDB_Connection.Close();
        }
        catch
        {
        }

        textBox1.Clear();

        int index = -1;

        DataGridViewRow row = DataGridView1.Rows
            .Cast<DataGridViewRow>()
            .Where(r => r.Cells["ID"].Value.ToString().Equals(returnID))
            .First();

        index = row.Index;

    }

    private void Register_Selection(object sender, KeyPressEventArgs e)
    {
        SqlConnection DBConnection = new SqlConnection("Data Source=DATABASE;Initial Catalog=imis;Integrated Security=True");
        SqlCommand cmd = new SqlCommand();
        String returnValue;
        Object returnName;
        Object returnID;
        string txtend = textBox1.Text;

        if (e.KeyChar == 'L')
        {
            e.Handled = true;
            DBConnection.Open();
        }

        if (DBConnection.State == ConnectionState.Open)
        {
            if (textBox1.Text.Length != 6) return;
            {
                cmd.CommandText = ("SELECT last_name +', '+ first_name from name where id =@Name");
                cmd.Parameters.Add(new SqlParameter("Name", textBox1.Text.Replace(@"L", "")));
                cmd.CommandType = CommandType.Text;
                cmd.Connection = DBConnection;
                returnValue = cmd.ExecuteScalar() + "\t " + textBox1.Text.Replace(@"L", "");
                returnName = cmd.ExecuteScalar();
                returnID = textBox1.Text.Replace(@"L", "");
                DBConnection.Close();

                DataTable_Connection(returnName, returnID.ToString());

                this.testDBTableAdapter.Fill(this.registrationDataSet1.TestDB);
            }
        }
    }