DataItemTemplate中的Combobox

时间:2010-07-29 13:21:06

标签: combobox devexpress aspxgridview

在AspxGridView中,DataItemTemplate中有两个组合框,手动加载。因此,当用户选择第一个组合的一个字段时,第二个将被禁用,我写道:

<dxe:ASPxComboBox ID="cmbEqualNotEqual" runat="server" 
                                                ClientInstanceName="cmbCEqualNotEqual" EnableClientSideAPI="true">
                                                <Items>
                                                    <dxe:ListEditItem Text=" " Value="0" />
                                                    <dxe:ListEditItem Text="Eşittir" Value="1" />
                                                    <dxe:ListEditItem Text="Eşit Değildir" Value="0" />
                                                </Items>
                                                <ClientSideEvents SelectedIndexChanged="function(s,e){
                                                    alert(s.GetEnabled());
                                                    var selectedIndex = s.GetSelectedIndex();
                                                    if(selectedIndex == 2)
                                                    {
                                                        cmbCBiggerSmaller.SetEnabled(false);
                                                    }
                                                }" />
                                            </dxe:ASPxComboBox> 

但是这段代码禁用了最后一行的组合,而不是行用户的工作。如何禁用行用户的工作?

由于

2 个答案:

答案 0 :(得分:3)

我自己回答:

 for (int i = 0; i < grid.VisibleRowCount; i++)
  {
     ASPxComboBox combito = grid.FindRowCellTemplateControl(i, grid.Columns[2] as GridViewDataColumn, "combito") as ASPxComboBox;
     //combito.Value  
  }

答案 1 :(得分:0)

出现问题是因为ClientInstanceName属性是为同一列中的所有编辑器设置为相同的值。一种可能的解决方案是处理ASPxGridView的HtmlRowCreated事件,并将两个编辑器的ClientInstanceName设置为唯一值。此外,在此事件处理程序中,您应该编写客户端SelectedIndexChanged事件处理程序。最后,要获取编辑器实例,请使用ASPxGridView的FindRowCellTemplateControl方法。

此外,以下文章对您有所帮助:

http://www.devexpress.com/Support/Center/ViewKBIssue.aspx?kbid=K18282