2012-10-02 32 views
1

我是WPF的新手,想知道如何將多個參數傳遞給代碼後面的ObjectDataProvider我如何將多個參數動態傳遞給ObjectDataProvider(代碼中)

XAML(可正常工作):

<ObjectDataProvider ObjectType="{x:Type local:GetListOpremaNajem}" 
        MethodName="GetOprema" x:Key="getData"> 
<ObjectDataProvider.MethodParameters> 
    <system:String>TextToSearch</system:String> 
    <system:Integer>5</system:Integer> 
</ObjectDataProvider.MethodParameters> 

對象方法:

public GetListOpremaNajem GetOprema(string searchText, UInt16 eID) 
{ 
    if (!string.IsNullOrEmpty(searchText)) 
    { 
     return Databases.CallStoredOprema(currentConnSTRING, searchText, eID); 
    } 
    else 
    { 
     return new GetListOpremaNajem(); 
    } 
} 

但是,下面的代碼返回什麼:

ObjectDataProvider _odProvider = new ObjectDataProvider(); 
_odProvider.ObjectType = typeof(GetListOpremaNajem); 
_odProvider.MethodName = "GetOprema"; 
_odProvider.MethodParameters.Add("TextToSearch"); 
_odProvider.MethodParameters.Add(5); 
this.DataContext = _odProvider; 

當僅使用一個參數(即searchText),它運作良好。如何在代碼中傳遞兩個參數?我搜索了網頁,發現沒有傳遞多個參數的語法。我究竟做錯了什麼?謝謝。

+0

無論如何,如果你有代碼,那麼無論如何你都不應該對'ObjectDataProvider'有太多的用處。 –

+0

它根本沒有被擊中。但是,當我只使用一個方法參數,即_'public GetListOpremaNajem GetOprema(string searchText)'_並僅在ObjectDataProvider實例中添加第一個參數時,它會執行此操作。 – user1714958

回答

1

替換此 -

_odProvider.MethodParameters.Add(5); 

_odProvider.MethodParameters.Add((UInt16)5); 

你的方法是沒有得到所謂的,因爲你要添加的int類型在參數列表中,但你的方法需要UInt16類型的第二個參數。因此,鍵入它的UInt16,它應該工作得很好。

+0

你說得對。它是Integer和UInt16類型之間的類型轉換。非常感謝。它工作正常。 – user1714958

相關問題