2013-05-13 4 views
1

Я пытаюсь получить значение из GridView и сохранить его как переменную сеанса.Получить значение от GridView

Я знаю имя столбца, и в GridView есть только одно значение. Каков наилучший способ выбрать его и сохранить как переменную сеанса?

Имя столбца CustomerID, а значение всегда является int.

+0

Какой тип столбца является его ? «BoundField»? – Magnus

+0

Посмотрите на это [ответ] (http://stackoverflow.com/a/625303/122005) – chridam

+0

Сетка может иметь много строк - знаете ли вы номер строки? –

ответ

2

если есть один столбец и одна строка в GridView вы можете попробовать ниже.

Session["MySessionValue"]= GridView1.Rows[0].Cells[0].Text; 

но исключение может быть выбрано при доступе по индексу, если в GridView нет записей. Так что лучше, чтобы проверить GridView1.Rows.Count Во-первых, и получить значение

+0

Правильно ли это записать на загрузку страницы? – joshuahornby10

+0

Где вы привязываетесь? и где вы хотите это значение? – Damith

+0

Причина, по которой я спрашиваю, поскольку она ничего не спасает. Должен ли я ждать загрузки страницы для вызова кода? Я просто хочу, чтобы он был сохранен в сеансе, и затем я использую его на следующей странице, на которую пользователь перебирает. – joshuahornby10

1

Вы можете установить DataKey для GridView в CustomerID и выберите по:

int ID = Convert.ToInt32(GridView1.DataKeys[indx].Value);

indx является индекс строки в GridView ..

+0

У меня есть ошибка, указав, что Index был вне пределов досягаемости. В GridView есть только одна строка, и она попыталась сделать 0 и 1 и по-прежнему получала ту же ошибку. – joshuahornby10

+0

Как я знаю, имя столбца есть способ просто выбрать это? Спасибо за вашу помощь. – joshuahornby10

+0

Какова ваша функция, чтобы выбрать строку? – mehdi

1

Это не правильный способ сделать это, вы лучше жёстко в cellindex, но в любом случае немного больше версия ответа Damith в

if (GridView1.Rows.Count > 0) 
{ 
    int indexofcolumn = 0; 
    foreach (DataControlField column in GridView1.Columns) 
    { 
     if (column.HeaderText == "CustomerID") break; 
     indexofcolumn++; 
    } 
    Session["CustomerID"] = GridView1.Rows[0].Cells[indexofcolumn].Text; 
} 
Смежные вопросы