Rambler's Top100
Главная
Новости
Статьи
Форумы
Книги
Коды
Сообщество
Блоги
О нас
 

Логин

Email:
  Пароль:

Войти
Зарегистрироваться
Забыл пароль

Поиск

 Искать :
 
Вперед

Сообщение

Varg


Архифлеймер

Зарегистрирован:
18 February 2005
Сообщения: 2733
Примеры кода: 0
 

DataGrid и фильтры

29 May 2008 23:59  


> Как правильно обращаться к строкам?

Через DataGridView ... ниже в примере есть разные способы поиска необходимой строки и изменения значения:
using System;
using System.Data;
using System.IO;
using System.Windows.Forms;

public partial class Form1 : Form
{
    public Form1()
    {
        ds = new DataSet();
        ds.ReadXml(new StringReader(
            @"<data>
                        <item type='t1' value='v1' />
                        <item type='t2' value='v2' />
                        <item type='t1' value='v3' />
                        <item type='t2' value='v4' />
                        <item type='t1' value='v5' />
                </data>"));
        ds.DefaultViewManager.DataViewSettings["item"].RowFilter = "type='t1'";

        DataGridView dgv = new DataGridView();
        dgv.Dock = DockStyle.Fill;
        dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
        dgv.Parent = this;
        dgv.DataMember = "item";
        dgv.DataSource = ds;
        dgv.AllowUserToAddRows = false;
        dgv.MouseClick += delegate(object sender, MouseEventArgs e)
        {
            DataGridView.HitTestInfo ht = dgv.HitTest(e.X, e.Y);
            if (ht.Type == DataGridViewHitTestType.Cell)
            {
                DataRowView drv = ds.Tables["item"].DefaultView[ht.RowIndex];
                drv["value"] += "HIT";
            }
        };

        this.Menu = new MainMenu(new MenuItem[] {
                    new MenuItem("ChangeCurrent", delegate { ChangeCurrent(); }),
                    new MenuItem("FindAndChange", delegate { FindAndChange(); }),
                    new MenuItem("ChangeSpecial", delegate { ChangeSpecial(); }),
                });
    }

    private DataSet ds;

    private void ChangeCurrent()
    {
        BindingManagerBase bmb = this.BindingContext[ds, "item"];
        DataRowView drv = (DataRowView)bmb.Current;
        if (string.Equals(drv["value"], "v5"))
        {
            MessageBox.Show("Disabled for v5");
            return;
        }

        drv["value"] = DateTime.Now.ToString();
        bmb.EndCurrentEdit();     // чтобы DataGridView обновил ячейку
    }

    private void FindAndChange()
    {
        DataRow[] rows = ds.Tables["item"].Select("value LIKE 'v5*'");
        foreach (DataRow row in rows)
            row["value"] += "!";
    }

    private void ChangeSpecial()
    {
        DataRowView drv = ds.Tables["item"].DefaultView[1];
        drv["value"] = "hello: " + DateTime.Now.Millisecond;
    }
}






Данное сообщение получено с сайта GotDotNet.RU
Последний раз редактировалось 29 May 2008 23:59
Наверх
  



Winforms

 DataGrid и фильтрыPeppi  29 May 2008 15:41
 DataGrid и фильтрыkillmeplease  30 May 2008 09:23
 DataGrid и фильтрыPeppi  30 May 2008 09:54
 DataGrid и фильтрыkillmeplease  30 May 2008 10:56
 DataGrid и фильтрыPeppi  30 May 2008 11:15
 DataGrid и фильтрыRadu  30 May 2008 11:50
 DataGrid и фильтрыPeppi  30 May 2008 13:52
 DataGrid и фильтрыVarg  29 May 2008 23:59
 DataGrid и фильтрыRadu  29 May 2008 16:05
 DataGrid и фильтрыPeppi  29 May 2008 16:11
 DataGrid и фильтрыRadu  29 May 2008 16:28
 DataGrid и фильтрыRadu  29 May 2008 16:30
 DataGrid и фильтрыPeppi  29 May 2008 16:34
 DataGrid и фильтрыPeppi  29 May 2008 16:08
 
Наш Киев

Apartments for Rent

Rambler's Top100
Рейтинг@Mail.ru
Идея: Dimon aka Manowar Программирование: Dimon aka Manowar Дизайн: Dan Lebedev
Хостинг от компании Parking.ru
Карта сайта