2012-01-28 75 views
1

当调用ASPxClientComboBox.AddItem()时,我得到_aspxRemoveAttribute函数中的一个错误,即obj为null。ASPxClientComboBox AddItem方法抛出错误

我已将它跟踪到CreateNewItem函数,该函数从不返回结果。

我的组合框开始未填充,并且我试图在客户端添加项目,但是当尝试将项目添加到组合框并添加了已从服务器端添加的项目时,出现同样的错误。

这是使用v2011 vol 2.5版本。

编辑 这里是组合框标记:

<dx:ASPxComboBox ID="txtCountry" runat="server" Width="95%" data-bind="dxDataBind: Countries, keyMember: 'Id', displayMember: 'Name', SelectedKey: CountryId"> 
    <ValidationSettings> 
     <RequiredField IsRequired="True" ErrorText="Country required" /> 
    </ValidationSettings> 
</dx:ASPxComboBox> 

数据绑定属性是KnockoutJS,其中我试图适应绑定到其他控件的一部分。

本质上,此刻我只是试图将一个项目添加到客户端上的一个空的组合框,两个字符串参数。

+0

你会分享您的标记?最初有没有ASPxComboBox中的任何项目? – Mikhail 2012-01-28 17:17:12

回答

0

指定ASPxComboBox.ClientInstanceName属性,以使控制的client-side programmatic object,并使用客户端AddItem方法如下:

<dx:ASPxComboBox ID="txtCountry" runat="server" Width="95%" ClientInstanceName="cmb"> 
    <ValidationSettings> 
     <RequiredField IsRequired="True" ErrorText="Country required" /> 
    </ValidationSettings> 
</dx:ASPxComboBox> 
<input type="button" value="Add Item" onclick="OnClick();" /> 

<script type="text/javascript"> 
    function OnClick() { 
     var text="Text1"; 
     var value="Value1"; 

     cmb.AddItem(text, value); 
    } 
</script> 
+0

是的,我正在做的AddItem等,我没有指定ClientInstanceName属性。但是文档说api将通过设置EnableClientSideApi或ClientInstanceName来启用。我没有设置,但我仍然能够使用客户端API,它只是无法正常工作。 – Adam 2012-01-29 14:15:16

+0

>> *我没有设置,但我仍然能够使用客户端API,它只是无法正常工作。*你如何调用此代码 – Mikhail 2012-01-29 14:48:05

+0

这有点复杂,但基本上我正在搜索声明的变量页面,查找DevExpress控件的实例,然后查找其匹配的html元素。我使用'x instanceof ASPXClientComboBox'来测试变量,所以它找到了一个实例。我承认大多数人不太可能以这种方式调用代码。我甚至不知道客户端的实例名称是什么,因为这一切都是自动发生的。 (如果您想知道,我正在为KnockoutJS编写一个绑定,以允许它使用devexpress控件 - 它看起来非常好!) – Adam 2012-01-29 19:37:03

1

我很难理解,这是因为EnableClientSideScript没有启用。然而,客户端API是可用的,它只是没有正常工作,这似乎不正确的行为。