2012-10-19 40 views
0

我正在EDMX中使用存储过程。我正在使用以下SP。如何从存储过程中获得值返回动态表在Asp mvc EDMX

Create getreportDAta(@Reportname varchar(50),@startDate datetime,@enddate datetime) 
begin 
    IF OBJECT_ID('tempdb..#ouputtable ') IS NOT NULL DROP TABLE #ouputtable ; 
    create #ouputtable (usdate datetime) 
    if(@reportname="abc") 
    begin 
    alter #ouputtable add(Some columns) 
    end 
     else begin 
     alter #ouputtable add(Some columns) 
     End 
     so oonn... 
    Select * from #ouputtable ; 

现在我想读取选择*从edmx #ouputtable中选择的值。输出不包含固定的列数。

我如何在ASP mvc EDMX中做到这一点。

回答

0

基本上我想做同样的事情,但最终无法弄清楚......所以我决定创建一个类,我可以打电话,而不是想打电话给这样的sp。 此链接提供了有关如何调用和SP的结果绑定到你的GridView的基本知识: http://www.aspnettutorials.com/tutorials/database/db-storedprocs-aspnet2-csharp.aspx

(参见“为代码隐藏页的流程如下。”部分此外,他们有一个链接。该页面如果你不进入C#)

这里在VB.NET版本是我的代码隐藏按钮单击事件的修改版本:

try { 
System.Configuration.Configuration rootWebConfig = 
    System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("/MyWebsite"); //create connection string object 
System.Configuration.ConnectionStringSettings connString; 
if (rootWebConfig.ConnectionStrings.ConnectionStrings.Count > 0) { 
    connString = rootWebConfig.ConnectionStrings.ConnectionStrings["MyConnectionString"]; 
    if (connString != null) { 
     System.Data.SqlClient.SqlCommand cmd = 
      new System.Data.SqlClient.SqlCommand("MyStoredProcedure", new System.Data.SqlClient.SqlConnection(connString.ConnectionString)); 
     cmd.CommandType = System.Data.CommandType.StoredProcedure; 
     cmd.Connection.Open(); 
     GridViewResults.DataSource = cmd.ExecuteReader(); 
     GridViewResults.DataBind(); 
     cmd.Connection.Close(); 
     cmd.Connection.Dispose(); 
    } 
    else { 
     throw new Exception("No MyConnectionString Connection String found in web.config."); 
    } 
} 
else { 
    throw new Exception("No Connection Strings found in web.config."); 
} 
} 
catch (Exception) { 
    throw; 
} 

简单地纳入到这一点在一类自己的您的edmx文件所在的数据层项目,并使用它来调用此类存储过程。 :)。