2009-04-06 5 views
1

Вопросы также могут быть:Как использовать хранимые процедуры ж/ASP.NET DataGrid

Что ваш предпочтительный способ вызова хранимых процедур, чтобы заполнить DataGrid?

В настоящее время я разрабатываю страницу ASP.NET, и я хотел бы узнать, подходит ли Linq для использования с моей БД SQL Server.

ADO кажется слишком хорошо, так что я просто хотел бы иметь обратную связь о том, что является наиболее подходящим в общих чертах ..

LINQ уверен позволяет легко вызвать хранимую процедуру, но я вроде застрял в пытаясь найти правильный способ поместить результирующий набор из хранимой процедуры в datagrid.

Не думаю, что я хочу сделать Еогеасп there..but кажется все примеры, чтобы указать, что путь .. или я просто запутался

I have read this blog post и this one, кажется, способы пойти являются foreach и Ienumerable методы .. и я немного запутался в целом.

Я также думаю о tutorial for creating a Movie DataBase, где DataGrid просто стал ненужным в этом случае.

Что самое простое, к точке пути доступа к простой SQL процедуры и возвращения населенное DataGrid или DataGrid как представления данных модели?

ответ

2

Я бы предложил использовать Linq для SQL. Вы правы, думая, что вы не должны использовать любые петли foreach - все, что вам нужно, это привязка данных.

например. В вашем коде позади, вы можете иметь DataBind событие, которое делает что-то вроде этого:

protected void GridView1_DataBanding(object sender, EventArgs e) 
{ 
      // Get an instance of our generated DataContext class. 
      DAL.AdventureWorks db = 
       new DAL.AdventureWorks(
        WebConfigurationManager.ConnectionStrings["AdventureWorksCS"].ConnectionString); 

      // Get a strongly typed List from the Stored Procedure output 
      List<DAL.MySPResult> myData = db.MySP().ToList(); 

      GridView1.DataSource = myData; 
} 

Вам нужно будет иметь настройки вашей хранимой процедуры в вашем Linq к классам SQL, перетащив его на рабочую поверхность.

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

+0

Спасибо! Моя основная проблема заключалась в том, что я не включал Linq. Опция для списка() не была в Intelisense ... Спасибо, теперь все хорошо. –

1

Использование SqlDataSource является самым простым способом. Если вы изолируете все ваши вызовы БД в бизнес-слое, вы можете просто создать объект ObjectDataSource, который вызвал хранимую процедуру. Хотя это может показаться излишним, это полезное умение, и очень легко реализовать, как только вы его повесите.

Вам действительно не нужен LINQ или foreach и т. Д., Если вы будете использовать элемент управления с привязкой к данным, так как вам не нужно будет его вручную заполнять (это то, что привязывает данные).

Еще одна вещь - я бы сильно рекомендуем использовать GridView вместо DataGrid; он новее, имеет множество функций, автоматизированный и более способный и привлекательный. Дайте мне знать, если вам нужен какой-либо образец кода.

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