2015-04-08 2 views
0

Так у меня есть DataTable, который использует:Получение столбцов из DataTable хранится в сессии

SELECT * FROM People WHERE ID = ? 

Вы можете понять, что это будет восстановить только одну строку, как идентификатор уникален:

usersTableAdapters.UsersTableAdapter user = new usersTableAdapters.UsersTableAdapter(); 

users.UsersDataTable userDataTable = user.getUserInfo(id); 

У меня есть затем сохранил DataTable в сеансе:

HttpContext.Current.Session.Add("userDT", userDataTable); 

Теперь я пытаюсь выяснить, как получить конкретный столбец от userDT в сеансе? Чтобы быть более ясным, столбец firstname?

ответ

1

Сначала введите объект сеанса как данные.

var tbl = ((DataTable)HttpContext.Current.Session["userDT"]) 

Затем используйте его как таблицу данных:

var col = tbl.Columns["firstName"]; 
+0

ли он затем хранится в сессии? и вместо использования 'Session [" firstName "];' Я должен использовать 'tbl.Columns [" firstName "];' для извлечения? – Samrikan

+0

@Samrikan Нет, первое имя не будет сохранено в сеансе. Вам нужно будет добавить его к сеансу. Кроме того, вы получаете только столбец здесь .. не значение. Чтобы получить значение, вам необходимо выполнить цикл по строкам и получить значение из столбца firstname. – paqogomez

+0

@Samrikan Если вы используете ADO.NET, вы можете просто захотеть сделать «ExecuteScalar» и вернуть единственное первое имя вместо того, чтобы возиться с этим деловым бизнесом. – paqogomez

1

Вы должны бросить объект Session для users.UsersDataTable: users.UsersDataTable userDataTable = сессии [ "userDT"] в качестве users.UsersDataTable;

-1

Попробуйте это,

DataView dv = new DataView((DataTable)HttpContext.Current.Session["userDT"]); 

получить таблицу только с колонкой

DataTable dt = dv.ToTable(true, "firstName"); 
Смежные вопросы