我需要用存儲過程填充數據網格。隨着asp.net我做到了使用存儲過程填充DataGrid(Silverlight業務應用程序)
http://g1204.hizliresim.com/w/5/43qb1.jpg
,但使用Silverlight,我不能這樣做。
http://e1203.hizliresim.com/v/x/3x3dw.jpg
這裏是我可以填寫在DataGrid中asp.net代碼:
DataTable dt = new DataTable();
SqlCommand cmd = new SqlCommand();
// Open the connection
using (SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
{
cnn.Open();
cmd.Connection = cnn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_get_Scorelist";
cmd.Parameters.Add("d1", new DateTime(2012, 03, 01));
cmd.Parameters.Add("d2", DateTime.Now);
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
da.Fill(dt);
}
}
GridView1.DataSource = dt.DefaultView;
GridView1.DataBind();
這裏是我的存儲過程;
USE [ATLAS]
GO
/****** Object: StoredProcedure [dbo].[sp_get_Scorelist] Script Date: 05.04.2012 14:54:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Procedure [dbo].[sp_get_Scorelist](@d1 datetime,@d2 datetime)
AS
BEGIN
SET FMTONLY OFF --SQL 2008 sonrası desteği yok, bir sonraki sürümde problem çıkacak
SET NOCOUNT ON
DECLARE @DT1 DateTime ,@DT2 DateTime ,@ToDay DateTime
DECLARE @Name nvarchar(25), @Surname nvarchar(25) , @EID int, @DayScore nvarchar(25)
DECLARE @Query varchar(Max), @FName varchar(80)
if (select name from tempdb..sysobjects where name like '#ScoreList%') <> '' DROP TABLE #Scorelist
Create Table #ScoreList (Name nvarchar(25),Surname nvarchar(25),ID int)
SET @[email protected]
SET @[email protected]
WHILE @DT1 <= @DT2
BEGIN
SET @FName = Convert (Varchar(2),DATEPART(day,@DT1))+'_'+Convert(Varchar(2),DATEPART(month,@DT1)) -- +Convert(Varchar(4),DATEPART(Year,@DT1))
SET @Query=N'ALTER TABLE #ScoreList ADD F'+ @FName +' nvarchar(25)'
EXECUTE(@Query)
DECLARE CRS_ALLOTMENT CURSOR FOR
--SET DATEFIRST 1
Select hr.Name, hr.Surname, hr.EmployeeID, sc.DayScore from hr_scoring sc left join hr_employee hr on sc.EmployeeID = hr.employeeID Where [email protected]
OPEN CRS_ALLOTMENT
FETCH NEXT FROM CRS_ALLOTMENT INTO @Name ,@Surname ,@EID ,@DayScore
WHILE @@FETCH_STATUS =0
BEGIN
IF (Select Count(*) FROM #ScoreList Where [email protected]) > 0
BEGIN
SET @Query=N'UPDATE #ScoreList Set F'[email protected]+'='''[email protected]+''' Where ID='+ Convert(varchar(30),@EID)
END
ELSE
BEGIN
SET @Query=N'INSERT INTO #ScoreList (Name,Surname,ID,F'[email protected]+') Values('''[email protected]+''' '+','+' '''+ @SurName+ ' '''+ ','+Convert(Varchar(25),@EID)+','+' '''[email protected]+' '''+') '
END
EXECUTE(@Query)
FETCH NEXT FROM CRS_ALLOTMENT INTO @Name ,@Surname ,@EID ,@DayScore
END
CLOSE CRS_ALLOTMENT
DEALLOCATE CRS_ALLOTMENT
SET @DT1 = @DT1+1
END
Select * From #Scorelist Order By Name,SurName
END
我的問題是如何從Silverlight中的存儲過程填充數據網格?
它應該在域服務還是在服務器端?如果你寫一個例子會很棒。
還是要謝謝你
請查看此鏈接(http://weblogs.asp.net /scottgu/archive/2007/08/16/linq-to-sql-part-6-retrieving-data-using-stored-procedures.aspx) – Hukam 2012-04-05 12:10:54
好得多,但你應該編輯你的[上一個問題](http: //stackoverflow.com/questions/9956931/fill-silverlight-datagrid-with-stored-procedure-entity-framework) – 2012-04-07 23:55:42