控件总是在ObjectDataSource中获取NullReference

时间:2014-06-14 14:47:38

标签: c# asp.net telerik objectdatasource

我试图第一次使用ObjectDataSource使用我的代码但是在其SelectMethod中我总是将Control作为null。

的ObjectDataSource

<asp:ObjectDataSource ID="objDataSourceStartAddress" runat="server" SelectMethod="GetSearchStartAddress" TypeName="TransElite.MainApplication.Booking" >
</asp:ObjectDataSource>

使用ObjectDataSource控制

<telerik:RadSearchBox runat="server" ID="radtxtSearchStartAddress" EmptyMessage="Search Resolved Address" MinFilterLength="5" OnSearch="radtxtSearchStartAddress_Search" DataTextField="DisplayAddress" DataValueField="Id" DataSourceID="objDataSourceStartAddress" Width="85%">
</telerik:RadSearchBox>

ObjectDataSource的SelectMethod

public List<AddressData> GetSearchStartAddress()
{
    // Assigning collection/list to StartSearchAddress 
    var StartSearchAddress = ClientDataProvider.AddressList(radtxtSearchStartAddress.Text);

    return StartSearchAddress;
}

请建议如何在SelectMethod中使用该控件。

2 个答案:

答案 0 :(得分:0)

http://demos.telerik.com/aspnet-ajax/searchbox/examples/declarativedatasources/defaultcs.aspx

在这里,您将使用声明性数据源控件的一些示例。 然而,Suche异常更可能源于对象而不是来自请求它们的控件。正如丹尼尔所说 - 调试是要走的路。这里没有人有您的自定义对象,类和应用程序。

答案 1 :(得分:0)

谢谢你的努力。但我想出了解决我的代码问题的代码。 得出的结论是,您无法使用SelectMethod中使用的方法进行控制。所以另一种方法是使用SelectParameters如下:

<asp:ObjectDataSource ID="objDataSourceStartAddress" runat="server" SelectMethod="GetSearchStartAddress" TypeName="TransElite.MainApplication.Booking">
        <SelectParameters>
            <asp:ControlParameter Name="startaddress" ControlID="radtxtSearchStartAddress" PropertyName="Text" DefaultValue="BLANKTEXT" />
        </SelectParameters>
    </asp:ObjectDataSource>

后面的代码将包含以下代码:

public List<AddressData> GetSearchStartAddress(string startaddress)
    {
        if (startaddress.Trim() == "BLANKTEXT")
            return null;


        var StartSearchAddress = ClientDataProvider.AddressListPanelCallback(startaddress);

        return StartSearchAddress;

    }