DataGridViewで行を選択する

私はデータテーブルからDataGridViewを埋めます。 そして、私はDataGridViewコントロールでselectionchangedイベントを使用します。

新しいアイテムをデータベースに挿入し、グリッド内のデータテーブルをリロードすると、 デフォルトでは、datagridviewの最初の行が選択されます。

どのようにDataGridViewに挿入された最後の行を選択できますか?

0

4 答え

あなたはこのようにすることができます....

private void ReloadDgv(int id)
{
 //id should be the your record id 
 //This is to set forcus on change record or new record
  RefeshDgv();
  if(condition you are adding new record to datagrid view)
    dgv.Rows[dgv.Rows.Count - 1].Selected = true;

  else if (id > 0)(you are updating present record)
  {
    var i = 0;
    foreach (DataGridViewRow row in dgv.Rows)
    {
      if ((int)row.Cells[0].Value == id)
      {
        dgv.Rows[i].Selected = true;
        break;
      }
      i++;
    }
  }
}



private void RefeshDgvStaff()
{
  if (_obj.getGridViewData().DataSource != null)
  {
    dgv.DataSource = _obj.getGridViewData(); //where i am binding the datagird view ...
    dgvSetHeaders();
  }
}

あなたはreloaddgv(id)を呼び出さなければなりません。

 public void savefunction()
 {
    //where do u insert the records into database
        reloaddgv(0);

  }
0
追加された

これを試して

dataGridView1.Rows[dataGridView1.Rows.Count - 1].Selected = true;
0
追加された
私はすでにそれを使用していました。
追加された 著者 Mohamed Reheem,
それは働いていませんでしたか?
追加された 著者 Anuraj,

私はあなたのためのダミープロジェクトを作成しました。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace TestApplications
{
/// 
/// Interaction logic for MainWindow.xaml ///
 
public partial class MainWindow : Window
{
    public class foo
    {
        public foo()
        {
            ID = Count + 1;
        }
        public static int Count;
        public int ID { get; set; }
        public string Name { get; set; }
    }

    List x = new List();
    foo LastSelectedItem = new foo();

    public MainWindow()
    {
        InitializeComponent();
        this.btnAdd.Click += new RoutedEventHandler(btnAdd_Click);
        this.dgvItems.SelectionChanged += new SelectionChangedEventHandler(dgvItems_SelectionChanged);
    }

    void dgvItems_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if(((DataGrid)sender).SelectedItem != null)
            LastSelectedItem = ((DataGrid)sender).SelectedItem as foo;
    }

    void btnAdd_Click(object sender, RoutedEventArgs e)
    {
        if (txtItemContent.Text.Trim().Length != 0)
        {
            foo item = new foo();
            foo.Count = foo.Count + 1;
            item.Name = txtItemContent.Text;
            x.Add(item);
            dgvItems.ItemsSource = null;
            dgvItems.ItemsSource = x;
            dgvItems.SelectedItem = LastSelectedItem;
        }
    }


}
}

WPFまたはSilverlightを使用している場合は、このコードを以下に示します(winformsを使用している場合は無視します)



    
        
        
    
    
        
            
            
        
    
    
        
        
        <button x:Name="btnAdd" Content="ADD" Margin="0" Width="75" VerticalAlignment="Center"/>
    

0
追加された

少なくとも1つの列があると仮定すると、グリッドの現在のセルを設定しようとします

dataGridView1.CurrentCell = dataGridView1[0,dataGridView1.Rows.Count - 1];
0
追加された