2009-07-15 3 views
2

Увольнение события RowDataBound, мой вопрос заключается в том, как вытащить DataKey для GridviewRowEventArgs e?GridView, RowDataBound (отправитель объекта, GridViewRowEventArgs e)

У меня есть таблица публикаций, и, как ни удивительно, ключ является PublicationID, однако у меня нет связанного поля с идентификатором публикации, но он указан как datakeyname. Я могу получить информацию, используя:

int pID =Convert.ToInt32(DataBinder.Eval(e.Row.DataItem,"PublicationID")); 

Но было интересно, есть ли более элегантный способ получения информации ?!

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

Это все .Net 3.0, C#.

Благодаря Р.

+0

Если способ, которым вы это делаете, работает, что случилось? – Jason

ответ

4

((GridView) отправитель) .DataKeys [e.Row.RowIndex] .Value.ToString();

+0

Спасибо, это довольно интересно. У меня есть второй вопрос: есть ли способ получить базовый источник данных аналогичным образом? У моего GridView есть базовый набор данных с двумя отношениями в нем, мне было интересно узнать, могу ли я взять одно из этих отношений и прочитать его, чтобы получить некоторые данные, вместо того, чтобы снова запросить базу данных или глобальный набор данных? Это кажется логически возможным. Я попытался: DataSet x = (DataSet) ((GridView) отправитель) .DataSource; но получил Null. – flavour404

+0

Я пробовал ваш учебник по галочкам, но продолжал получать сообщение об ошибке: <% # Bind ("Include")%>, добавленный столбец в мою таблицу, установить значение по умолчанию 0, но этот компонент Bind сделал ошибку, что-то о преобразование из числа, немного странное. – flavour404

+0

К первому комментарию: вы получаете ключевую информацию, которая вам нужна, из e.Row.DataItem и используйте ее для извлечения данных из DataSet, но DataSet должен быть в области. Таким образом, вам может потребоваться получить DataSet, установить приватную переменную страницы в этот DataSet, а затем связать GridView. И тогда в событии RowDataBound будет отображаться DataSet. – JBrooks

Смежные вопросы