CurrentRow DataGridissä

Jari_Kettunen 17.11.05 19:17

DataGrideissä ei ole implemetoitu metodia jolla taulukon gridissä valittu rivi on joten sen voi tehdä seuraavasti

 Tekstiversio  Arvo: 0 (0 ääntä)  Äänestä: +  -
//Tehdään ensin globaali luokka  ja static metodi niin ei tarvita instanssia
//luokassa on on funktio jolle menee parametrina gridi
//web sovelluksissa DataGridView pitänee vaihtaa DataGrid:si ja using lause System.Web

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Windows.Forms;

namespace xyz
{
  public class Global
  {
    public Global()
    {
    }
    public static DataRow CurrentRow(DataGridView aGrid)
    {
      CurrencyManager xCM =
        (CurrencyManager)aGrid.BindingContext[aGrid.DataSource, aGrid.DataMember];
      DataRowView xDRV = (DataRowView)xCM.Current;
      return xDRV.Row;
    }
  }
 }
 
ja käytetään vaikka seuraavasti
using xyz
...
    private void gAsetukset_RowEnter(object sender, DataGridViewCellEventArgs e)
    {
      DataRow xRow = Global.CurrentRow(gAsetukset);
      MessageBox.Show(xRow["Avain"].ToString());
       
    }

//Korjaus tosin Net 2.0 versiossa jo löytyy CurrentRow ja seuraava toimii jo lennosta.

 private void gAsetukset_RowEnter(object sender, DataGridViewCellEventArgs e)
    {
      DataGridViewRow xRow = gAsetukset.CurrentRow;
      if (xRow != null)
      MessageBox.Show(xRow.Cells[0].Value.ToString());
     
       
    }

 
 

weicco 12:16 18.11.05 
DataGrid esittää DataSourcen sisällön, jolloin voit kysyä nykyistä riviä tyyliin:

string[] names = new string[] { "foo", "bar" };
dataGrid1.DataSource = names;

string name = (string)BindingContext[names, ""].Current;