Как сохранить данные и отобразить их, когда у меня есть некоторые ограничения - PullRequest
0 голосов
/ 29 апреля 2011

Трудно указать заголовок ...

Я ломаю голову, чтобы понять эту проблему,

У меня есть пакет, который включает в себя «data», «time» и «id».

Мне нужно сохранить его в некоторой структуре данных и каким-то образом отображать только данные в форме (возможно, в виде таблицы), но мне нужна возможность получать информацию об остальном пакете (время и идентификатор), когда я нажимаю на отображаемые данные.

Например:

0110 1110 0101 0001

Первый идентификатор данных равен 9, а время - 2222. Когда я нажимаю на первые данные (0110), мне нужно отобразить (скажем, в ярлыке на форме) id = 9 и время = 2222.

Еще одна вещь, данные должны отображаться, как в примере выше (в строке с пробелом между данными.

Edit: Я забыл что-то важное. Если я использую привязку данных, есть возможность изменить расположение данных в сетке (на основе информации о некоторых пакетах) с одной ячейки / строки на другую? если нет, может быть, связывание данных здесь не очень хорошо.

Ответы [ 2 ]

0 голосов
/ 29 апреля 2011

Сделайте ваш пакет классом, где data, time и id являются частными членами, а DisplayData является публичной собственностью.Чтобы получить доступ к содержимому закрытых членов извне, используйте свойства с атрибутом [Browsable(false)]:

public class Packet
{
    private int data, time, id;

    public string DisplayData {get {return FunctionToFormatDataToMyNeeds(data); }}
    // ...

    [Browsable(false)]
    public int Time{get{return time;}}
}

Привязайте список этих объектов к источнику данных вашего DataGridView.

0 голосов
/ 29 апреля 2011

Если я понимаю, что вы пытаетесь сделать, используя DataGridView, попробуйте следующее:

// DataGridView

Databing the data source to the DataGridView (use a list of your packet for that)

---------------------------------
| DATA 1 | DATA 2 | DATA 3 | ... (Header)
---------------------------------
|  0110  |  1110  |  0101  | ... (Data)
---------------------------------

Добавьте обработчик событий в DataGridView CellContentClick, например, так:

private void myDataGrid_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    if (e.RowIndex > -1 && e.ColumnIndex > -1) // A row and cell was selected
    {
        var packet = myDataGrid.Rows[e.RowIndex].DataBoundItem as Packet;
        if (packet != null)
        {
            // Display packet information
        }
    }
}

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...