3
在Silverlight應用程序中,我使用存儲過程來更新我的數據庫的表。在使用存儲過程修改數據庫之後更新上下文
ALTER PROCEDURE [dbo].[SP_ADD_MIS_MISSION]
(
@IdMission as int,
@IdVersion as smallint,
@LibMission as varchar (50)
)
AS
BEGIN
DECLARE @IDNEWVERSION as int = 1,
@IDNEWMISSION as int = @IdMission,
@supp as bit = 1
BEGIN
IF @IdMission != 0 AND @IdMission is not NULL
BEGIN
SELECT @IDNEWVERSION = MAX(IDVERSION)+1 FROM MIS_Mission where [email protected]
Update MIS_Mission SET Suppression = @supp WHERE [email protected] AND MIS_Mission.IdVersion=(@IDNEWVERSION-1)
END
ELSE
BEGIN
SET @IDNEWVERSION = 1
select @IDNEWMISSION = MAX(MIS_Mission.IdMission)+1 from MIS_Mission
if @IDNEWMISSION is NULL SET @IDNEWMISSION=1
END
Insert MIS_Mission (IdMission,
IdVersion,
LibMission,
Suppression
)
values (@IDNEWMISSION,
@IDNEWVERSION,
@LibMission,
@Suppression
)
SELECT @IDNEWMISSION
END
我在WCF RIA服務中添加該代碼,啓動存儲過程:
public void SetMission(MIS_Mission mis)
{
_entity.ADD_MIS_MISSION(mis.IdMission,mis.IdVersion,mis.LibMission);
}
而且我在我的Silverlight應用程序添加該代碼蒙山值在我的DataGrid進入更新我的數據庫:
private void UpdateMission_Click(object sender, RoutedEventArgs e)
{
foreach(MIS_Mission mis in dG_Mission.ItemsSource)
{
var operation = _Context.SetMission(mis);
operation.Completed += (se, ev) =>
{
};
}
}
但是當我完成更新我的數據庫,我的背景沒有updat蒙山IdVersion的新價值,和我的DataGrid中顯示我的任務的舊版本。
如何更新我的上下文而無需重新加載我的數據網格?
呢'_Context.SetMission(MIS);'觸發事件?如果是,你需要在調用之前分配'operation.Completed + =(se,ev)=>'。如果不是,則需要觸發附加後會觸發'operation.Completed'的事件 – Nogard
謝謝您的回覆。我的'operation.Completed + ='似乎是這樣工作的。當我嘗試時,我沒有問題。 –
您是否在更新數據庫時檢索數據?如果沒有,您的應用程序可能不知道您已更新任何內容。如果您不想重新查詢數據庫,則需要在每次更新數據庫後將基礎數據存儲在'List <>'或任何其他結構中並重新綁定'datagrid'。另一種方法是使用'DataBinding'和'INotifyPropertyChanged'實現 - 使用這種方法,你的用戶界面'datagrid'將自動從底層結構更新。 – Nogard