C# 使用LINQ C通过文本框更新DataGridView中的选定行值?

C# 使用LINQ C通过文本框更新DataGridView中的选定行值?,c#,winforms,linq,datagridview,C#,Winforms,Linq,Datagridview,我有一张表格。其中包含2个选项卡 第一个选项卡是例如Team1 info,您可以在其中从datagridview中选择player。选定玩家的信息将填充在指定的文本框中。 在表2中,团队2,和完全相同的概念。 我确实使用了完全相同的代码来更新团队1Tab1玩家的信息,而且我工作正常。但不适用于第2组第2名球员 这是我的代码的屏幕截图[![在此处输入图像描述][1][1] 第一队 private void updateButton_Click(object sender, EventArgs e

我有一张表格。其中包含2个选项卡

第一个选项卡是例如Team1 info,您可以在其中从datagridview中选择player。选定玩家的信息将填充在指定的文本框中。 在表2中,团队2,和完全相同的概念。 我确实使用了完全相同的代码来更新团队1Tab1玩家的信息,而且我工作正常。但不适用于第2组第2名球员

这是我的代码的屏幕截图[![在此处输入图像描述][1][1]

第一队

 private void updateButton_Click(object sender, EventArgs e)
    {
        //Local Variable
        int barID = 0;


        if (team1DataGridView.CurrentRow != null)
        {   
            //Get row index
            int rowIndex = team1DataGridView.CurrentRow.Index;

            //Pass to local Variable
            barID = Convert.ToInt32(team1DataGridView.Rows[rowIndex].Cells[0].Value);
        }

        var updatePlayers = (from p in _dbContext.barcelonaTeams
            where p.ID == barID
            select p).SingleOrDefault();

        if (updatePlayers != null)
        {
            updatePlayers.LastName = lastNameTextBox.Text;
            updatePlayers.FirstName = firstNameTextBox.Text;
            updatePlayers.Phone = cellNumberTextBox.Text;
            updatePlayers.PlayersPosition = playerPositionComboBox.Text;
        }

        try
        {
          //Submit Changes
           _dbContext.SubmitChanges();

            //Refresh datagridview'
            team1DataGridView.Refresh();
        }
        catch (Exception exception)
        {
            //Display an error message
            MessageBox.Show(exception.Message);
        }
    }
第二小组

private void mUpdateButton_Click(object sender, EventArgs e)
    {
        //Local variable
        int barID = 0;


        if (team2DataGridView.CurrentRow != null)
        {
            //Get row index
            int rowIndex = team2DataGridView.CurrentRow.Index;

            //Pass to local Variable
            barID = Convert.ToInt32(team2DataGridView.Rows[rowIndex].Cells[0].Value);
        }

        var updatePlayers = (from p in _dbContext.manchesterUnitedTeams
                             where p.ID == barID
                             select p).SingleOrDefault();

        if (updatePlayers != null)
        {
            updatePlayers.LastName = mLastNameTextBox.Text;
            updatePlayers.FirstName = mFirstNameTextBox.Text;
            updatePlayers.Phone = mCellNumberTextBox.Text;
            updatePlayers.PlayersPosition = mPositionComboBox.Text;
        }
        try
        {
            //Submit to datagridview
            _dbContext.SubmitChanges();

            //Refresh datagridview
            team2DataGridView.RefreshEdit();
        }
        catch (Exception exception)
        {
            //Show an error message
            MessageBox.Show(exception.Message);
        }
    }

我认为您的dbContext.Submit方法实际上并没有提交2个选项卡的数据成员的值。它只是再次发送团队1变量的值

它不起作用,无法向我们解释任何问题。请提供更多信息,什么不起作用?有什么错误吗?有例外吗?是否未填充文本框或未更新gridview?是否调试代码并验证rowIndex和barID的值是否正确?是否查看刷新/刷新编辑?如果不是,当我想从选项卡2中的datagridview中选择一个播放器时,如何声明您的上下文。它确实抛出了一个异常,因为索引超出了范围。必须为非负数且小于集合的大小。参数名称:单步执行=>mLastNameTextBox之后的indexIn调试模式。Text=team2DataGridView。SelectedRows[0]。单元格[1]。Value.ToString;抛出超出范围的参数异常