WinForms:如何在网格上获取选定的行

时间:2018-04-16 18:58:36

标签: c# winforms grid

我想创建一个表单,我可以在不同的数据库中打开表并删除一些行。 enter image description here

看起来像这样。表格不同。所以我用

boxGrid.Controls.Clear();
DataGridView g = GetTableGrid(databaseName);
boxGrid.Controls.Add(g);

GetTableGrid()将生成一个新的DataGridView并替换之前的那个 它会改变表格。但是导致问题在于让我删除表中的选定行。

我该怎么办? 我只需要获得行中的第一个col。它是数据库中的主键。

2 个答案:

答案 0 :(得分:1)

这里的问题是,每当用户选择一个新表时,你总是创建一个新的datagridview(我会假设它在datagridview下面的按钮)

您可以执行的操作是在boxgrid对象上添加datagridview之前,可以向其添加SelectionChanged

var query = offers.find({'type':'Point', offer_by:user_id});

// Execute Query and Return the Query Results
query.exec(function(error, result_offers) {

    if (error) {

        return callback(error, null);
    } else {

        var array_offers = new Array();
        for (var i = 0; i < result_offers.length; i++) {

            array_offers.push(formatOffers(result_offers[i]));
        }
        return callback(null, array_offers);
    }
});

然后你可以得到你想要的价值

boxGrid.Controls.Clear();
DataGridView g = GetTableGrid(databaseName);
g.SelectionChanged += new EventHandler(dvg_SelectionChanged);
boxGrid.Controls.Add(g);

答案 1 :(得分:0)

如果您只想获得点击行的某个列(在本例中为第一个列),您可以执行以下操作(它是我如何操作的):

private void yourGridView_SelectionChanged(object sender, EventArgs e)
 {
//makes sure a row is selected
     if (yourGridView.SelectedCells.Count > 0)
     {
         int selectedrowindex = yourGridView.SelectedCells[0].RowIndex;

         DataGridViewRow selectedRow = yourGridView.Rows[selectedrowindex];  

//guessing you´re storing your value in a variable
          string a = Convert.ToString(selectedRow.Cells["columnName"].Value);   
//where columnName is the name of the column you want the value printed of...        
     }
 }