单击标题或单选按钮以选择Fancytree节点

时间:2015-12-17 22:49:07

标签: fancytree

我正在使用Fancytree作为单选按钮。我希望能够点击标题或相关的单选按钮来选择节点。

使用基本的Fancytree初始化,

$("#tree").fancytree({
  checkbox: true,    // turn on checkboxes
  selectMode: 1      // allow only a single selection
});

单击节点标题会突出显示标题,但不会勾选单选按钮。之后,勾选一个单选按钮可选择该节点,但之前选择的节点上的突出显示仍然存在。在这里试试:https://jsfiddle.net/slothbear/db4gzh47

我已经阅读了FAQ,Fancytree为活动,选定,关注和悬停维护了单独的状态。我已经尝试了很多事件来保持节点选择和激活同步,但还没有找到合适的组合。

有没有办法模拟标记的HTML单选按钮的行为,您可以在其中单击标签或单选按钮?示例:http://jsfiddle.net/Gu55B/1/

2 个答案:

答案 0 :(得分:1)

我尝试添加return false并且它有效。尝试类似的东西:

$("#tree").fancytree({
  checkbox: true,
  selectMode: 1,
  click: function(event, data){
    // data.node.setSelected(true) will work too
    data.node.toggleSelected();
    return false;
  }
});

希望它有所帮助!

答案 1 :(得分:0)

要具有扩展器功能,请添加以下条件:

public class AttendanceModeConverter : System.ComponentModel.TypeConverter
{
    private static List<KeyValuePair<int, string>> _modos;

    static AttendanceModeConverter()
    {
        if (_modos == null)
        {
            _modos = new List<KeyValuePair<int, string>>();
            _modos.Add(new KeyValuePair<int,string>(-1, "Según reloj"));
            _modos.Add(new KeyValuePair<int,string>(0, "Entrada"));
            _modos.Add(new KeyValuePair<int, string>(1, "Salida"));
        }
    }

    public override bool GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext context)
    {
        return _modos != null;
    }

    public override bool GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext context)
    {
        return _modos != null;
    }

    public override System.ComponentModel.TypeConverter.StandardValuesCollection GetStandardValues(System.ComponentModel.ITypeDescriptorContext context)
    {
        return new StandardValuesCollection(_modos);
    }

    public override bool CanConvertTo(System.ComponentModel.ITypeDescriptorContext context, Type destinationType)
    {
        if (destinationType == typeof(string))
            return true;

        return base.CanConvertTo(context, destinationType);
    }

    public override object ConvertTo(System.ComponentModel.ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
    {
        if (destinationType == typeof(string))
        {
            if (value == null)
                return "Automático";

            if (value is KeyValuePair<int, string>)
                return ((KeyValuePair<int, string>)value).Value;

            return _modos.Where(m => m.Key.Equals((int)value)).FirstOrDefault().Value;
        }

        return base.ConvertTo(context, culture, value, destinationType);
    }

    public override bool CanConvertFrom(System.ComponentModel.ITypeDescriptorContext context, Type sourceType)
    {
        if (sourceType == typeof(string))
            return true;

        return base.CanConvertFrom(context, sourceType);
    }

    public override object ConvertFrom(System.ComponentModel.ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
    {
        if (value.GetType() == typeof(string))
            return _modos.Where(m => m.Value.Equals((string)value)).FirstOrDefault().Key;

        return base.ConvertFrom(context, culture, value);
    }
}