【问题标题】:How to Disable Particular Cells in Telerik GridView Row如何禁用 Telerik GridView 行中的特定单元格
【发布时间】:2012-04-21 17:18:16
【问题描述】:

您好,我的 WPF 应用程序中有一个 telerik GridView。在那个网格中,我有三列,如 Number、MaxMin。现在我需要禁用 MinMax 单元格,什么时候我将为选定行的 Number 列提供一些值。

我将 MaxCellMinCell 等两个变量声明为 GridViewCellBase。如果查询(下面提到获取 MaxCell 和 MinCell)将返回空值,我无法将 IsEnabled 设为 False。它不接受任何价值。它给出了空引用异常。 我怎么解决这个问题 ?可以请告诉我这个问题的解决方案吗?提前致谢。

       foreach (GridViewCell cell in row.Cells)
         {
             if (cell.Column.Header.ToString() == "Number" && Convert.ToInt32  (cell.Value) > 0)
             {
                 GridViewCellBase MaxCell = new GridViewCellBase();
                 GridViewCellBase MinCell=new GridViewCellBase();
                 MaxCell=(from c in row.Cells
                                    where c.Column.Name == "Max"
                                    select c).FirstOrDefault();
                 MinCell =(from c in row.Cells
                                     where c.Column.Name == "Min"
                                     select c).FirstOrDefault();

                 MaxCell.IsEnabled = false;// Here I am getting the null reference  exception when MaxCell and MinCell having empty values


                 MinCell.IsEnabled = false; 
                 break;
             }


         }

MaxCell 总是只返回空值。所以我不能给出 IsEnabled 属性。现在我的疑问是,为什么 MaxCell 值总是以空值或空值的形式出现?单元格具有 "Max""Min" 之类的列。那么它应该返回 Actual Cell 但为什么它总是返回 null 值?

【问题讨论】:

  • 不确定我是否理解您的问题,但您不能不检查MaxCell 是否为空,然后访问属性,因为如果找不到,FirstOrDefault 将返回 null
  • 它总是只返回空值。如果我检查 MaxCell,它是否为空,它将从我的循环中出来。所以我不能给出 is enabled 属性。现在我的疑问是,为什么 MaxCell 值总是以空值或空值的形式出现?单元格具有像“Max”和“Min”这样的列。那为什么它总是返回空值?
  • 好吧,您已经在跨单元格循环,所以可能只有一个单元格可能满足条件,而对于其他单元格,它会返回 null,当您已经在循环单元格时,为什么选择?
  • 谢谢。实际上我的需要是,当我在 Number 列上给出一些 int 值时,同一行中的 Max 和 Min 列应该被禁用,而不是整个列应该被禁用......同一行中有三个不同的列为什么我这样尝试...你能告诉我实现这一目标的正确方法吗? :-)

标签: c# wpf xaml telerik


【解决方案1】:

而不是使用您描述的方法。我会尝试修改特定列的单元格样式,并使用返回适当值的转换器创建 IsEnabled 属性的绑定。

<Style x:Key="MinMaxCellStyle" TargetType="{x:Type GridView:GridViewCell}">                        
      <Setter Property="IsEnabled" Value="{Binding Normal, Converter{StaticResources NormalToEnabledConverter}" />
</Style>

然后将此样式应用到特定的列作为休闲:

<GridView:GridViewDataColumn CellStyle="{StaticResource MinMaxCellStyle}" />

如果您不喜欢这样,您可以随时使用触发器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-14
    • 2017-07-25
    • 2016-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多