asp.net (C #): получить значение неотображаемого поля из выбора вида сетки - PullRequest
1 голос
/ 26 июня 2009

У меня есть элемент управления GridView, связанный с ObjectDataSource, который возвращает список объектов, которые выглядят следующим образом:

public class X {
    public string DisplayName {
        get;
    }
    public string Guid {
        get;
    }
}

Я не хочу показывать свойство Guid в GridView, но мне нужно получить его, когда выбран объект.
Не удалось найти свойство «DataValueField», как для элемента управления ListBox.
В качестве обходного пути я попытался установить Visible=false для столбца, привязанного к свойству Guid, и получить текст ячейки из объекта Row в методе SelectedIndexChanged:

protected void GridView1_SelectedIndexChanged(object sender,EventArgs e){
    GridViewRow row = GridView1.SelectedRow;
    string id = row.Cells[2].Text; // empty
}

Но это не работает - очевидно, если столбец не виден, его свойство Text остается пустым.

Как я могу получить Guid для выбранного объекта, показывая только DisplayName?

Ответы [ 3 ]

4 голосов
/ 26 июня 2009

Не уверен, как это работает с ObjectDataSource, но с SqlDataSource мы устанавливаем ключи в строках GridView.

GridView1.DataKeyNames = new String[] {"Guid"};

Затем вы можете получить ключ, выполнив следующее:

string guid = GridView1.DataKeys[GridView1.SelectedRow.RowIndex];
1 голос
/ 26 июня 2009

Добавьте «Guid» в свойство DataKeyNames GridView. Это позволит ему быть доступным, даже если столбец скрыт.

0 голосов
/ 26 июня 2009

Разве вы не можете использовать row.DataItem, чтобы получить сам объект?

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