FineUI 官方论坛

标题: 这种异常一般什么情况下回发生? [打印本页]

作者: hcp    时间: 2016-1-3 10:52
标题: 这种异常一般什么情况下回发生?
本帖最后由 hcp 于 2016-1-3 10:57 编辑

尝试在PageInit事件里为表格列动态创建Filter,代码:
  1. if (grid.AllowFilters)
  2.                 {
  3.                     if (!col.EnableFilter) continue;
  4.                     col.Filter.EnableMultiFilter = true;
  5.                     switch (c.DataType)
  6.                     {
  7.                         case ColDataType.String:
  8.                             col.Filter.Operator.Add(CreateStringOperator());
  9.                             col.Filter.Field.Add(CreateStringField());
  10.                             break;
  11.                         case ColDataType.DateTime:
  12.                             col.Filter.Operator.Add(CreateNumericOrDateOperator());
  13.                             col.Filter.Field.Add(CreateDateField());
  14.                             break;
  15.                         case ColDataType.Int:
  16.                             col.Filter.Operator.Add(CreateNumericOrDateOperator());
  17.                             col.Filter.Field.Add(CreateFieldInt());
  18.                             break;
  19.                         case ColDataType.Float:
  20.                             col.Filter.Operator.Add(CreateNumericOrDateOperator());
  21.                             col.Filter.Field.Add(CreateFieldFloat());
  22.                             break;
  23.                         case ColDataType.Bool:
  24.                             col.Filter.EnableMultiFilter = false;
  25.                             col.Filter.Field.Add(CreateBoolField());
  26.                             break;
  27.                         default:
  28.                             break;
  29.                     }
  30.                 }
复制代码


在aspx里把列的EnableFilter属性设置为true的话就会报以下异常:

[KeyNotFoundException: 给定关键字不在字典中。]        
    System.Collections.Generic.Dictionary`2.get_Item(TKey key) +11770241   
    FineUIPro.FState.OjseAobIYmgIEDyRgSqSTUcJUgsAA() +167   
    (FState ) +31   
    FineUIPro.ControlBase.OnPreRender(EventArgs e) +399   
    System.Web.UI.Control.PreRenderRecursiveInternal() +88   
    System.Web.UI.Control.PreRenderRecursiveInternal() +160   
    System.Web.UI.Control.PreRenderRecursiveInternal() +160  
    System.Web.UI.Control.PreRenderRecursiveInternal() +160   
    System.Web.UI.Control.PreRenderRecursiveInternal() +160   
    System.Web.UI.Control.PreRenderRecursiveInternal() +160   
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4775


但是如果在代码里直接把列的EnableFilter属性值设置为true,如下就正常了:
  1. if (grid.AllowFilters)
  2. {
  3.     col.EnableFilter = true;
  4.     col.Filter.EnableMultiFilter = true;
  5.     switch (c.DataType)
  6.     {
  7.         .....
  8.     }
  9. }
复制代码
想请教一下这是为什么,如何才能在aspx中设置属性不报错?










欢迎光临 FineUI 官方论坛 (https://fineui.com/BBS/) Powered by Discuz! X3.4