使用列号访问DataGrid中的列引起的问题

问题描述

WPF应用程序中,使用DataGrid来显示员工信息,包含公司名称,姓名,年龄,电话四列。而在某些情况下,电话列需要被隐藏,所以在画面的后端代码中使用下面的代码来控制电话列的显示情况。

if (isShowTelephone)
{
    this.DataGrid_People.Columns[3].Visibility = Visibility.Visible;
}
else
{
    this.DataGrid_People.Columns[3].Visibility = Visibility.Collapsed;
}

当然,使用这些代码可以达到想要的效果。只是,这里存在一个隐患:倘若后面的开发人员在电话列的前面增加或者删除了若干列的话,再去执行我们的代码就会出问题,因为此时的this.DataGrid_People.Columns[3]指的就不再是电话列,那么控制电话列显示的代码就变成了控制其他列显示的代码,该隐藏的可能没有被隐藏,而该显示的可能没有被正常显示。

解决方法

为电话列指定Name,使用Name来访问电话列,假设将电话列命名为Columns_Telephone,那么控制电话列显示的代码可以修改为:

if (isShowTelephone)
{
    this.Columns_Telephone.Visibility = Visibility.Visible;
}
else
{
    this.Columns_Telephone.Visibility = Visibility.Collapsed;
}

这样一来,再在电话列前面增加或者删除列时,就不会影响到这部分代码的正确执行了。

时间: 2024-10-11 08:16:42

使用列号访问DataGrid中的列引起的问题的相关文章

WPF:设置DataGrid中DataGridColumn列的普通样式和编辑样式

WPF:设置DataGrid中DataGridColumn列的普通样式和编辑样式 时间:2012-02-01 20:28来源:博客园 作者:刘圆圆 点击:1570次 0:DataGridColumn类型的继承树 DataGridColumn的派生类: 一般情况下DataGridBoundColumn和DataGridComboBoxColumn足以满足多数列的样式,如果需要自定义列样式,则可以使用DataGridTemplateColumn类型. 在设置列编辑样式之前,我们先创建一个简单的Dat

获取datagrid中编辑列combobox的value值与text值

var ed = $('#dg').datagrid('getEditor', {index:editIndex,field:'productid'}); var productname = $(ed.target).combobox('getText'); var value = $(ed.target).combobox('getValue'); getEditor options 获取指定编辑器,options包含2个属性:index:行索引.field:字段名称. 代码示例: // 获取

EasyUi DataGrid中数据编辑方式及编辑后数据获取,校验处理

EasyUi中的DataGrid提供前台编辑的相关函数. 实现客户选中DataGrid中一列后,对选中列中的一个字段进行编辑,并对数据进行实时校验后,传递至后台保存的需求, 主要涉及到DataGrid中设置编辑单元格,获取编辑单元格,编辑单元格的onchange事件处理,通过当前光标所在编辑单元格获取所在行. 1. 设置编辑单元格 在列定义中增加editor属性,参数为type,options eg: {title:'上级分配额度',field:'assigned_amount_temp',wi

转Delphi中Memo显示行号列号

http://www.alonely.com.cn/Delphi/20160814/8912.html 实例说明本例是个光标应用的简单技巧,希望通过这个例子的学习后能举一反三.Delphi中像这样简单而又实用的例子还有很多,只要平时多注意积累就能写出简洁.执行效率高的代码.编程思路直接向Memo组件发送消息EM_LineFromChar并检测返回值,即可获知此组件中光标所在的行号,向Memo组件发送消息EM_LineIndex并检测返回值即可获知此组件中光标所在的列号 实例说明 本例是个光标应用

easyUI在可编辑的datagrid中计算两列的值

在这个教程中你将学习如何包含一个运算的列在可编辑的datagrid中,一个运算列通常包含一些运算值从一个或多个其他列. 查看Demo 首先,创建一个可编辑的datagrid,这就是我们创建的一些可编辑列,'listprice','amount' 和'unitcost' 列定义为numberbox 编辑类型,运算列是 'unitcost'字段, 将是 listprice 乘以 amount列的结果. <table id="tt" style="width:600px;he

44.从键盘输入12个数存入二维数组a[3][4]中,编写程序求出最大元素的值及它所在的行号和列号

//1.建立二维数组 //2.运用循环,将内容输入到数组中 //3.求出最大元素,并输出行号和列号 #include<iostream> using namespace std; int main() { int a[3][4]; int Max=0;//赋值之前需要先置为0 cout<<"please input 12 numbers: "<<endl; for(int i=0;i<3;i++)//嵌套循环,用于向二维数组中输入内容 { fo

SL 的 DATAGRID中如何加入计算列?

例如,我的数据库中实体表对应到EF中的实体类是 class { public int  F1; public int F2; } 我在服务端做domainservice 我在SL端使用wcf ria,绑定到一个datagrid,想加入一个列,myF3=F1+F2,实现类似效果. 请高人指点,谢谢!!! SL 的 DATAGRID中如何加入计算列?

WPF DataGrid中鼠标双击某一列,弹出窗体作为(增加、修改、详细)按钮的快捷键。

跟触发器行为有关,什么是触发器什么是行为,我并不能看懂.在此先强行记忆,后知后觉,再回来理解.先能把手里的活做出来,这能让你暂时不被开除.实话实说.——一个菜农的自述. 这个时候就会有一些爱教的,好为人师,跳出来一副指点迷津的样子,打着授之予渔的幌子,开始跟你吹牛逼,开始说一些自己都不J8明白的东西.我只是问一个简单的问题,你直接告诉我1+1=2就可以了.你妈逼,用你告诉我,1+1在真正的时候用不上么?用你告诉我这么写不好,不高端,你要是不屑写这种新手理解的东西,那你就别理我,你可以不善良,你别

jQqery EasyUI dategrid行中多列数据的可编辑操作

最近的项目中需要在前台dategrid列表中直接修改某些列的数据,并且修改后的数据需要不通过后台而自动更新在列表中. 带着这一问题开始寻找实现的思路,首先想到的就是去jQqery EasyUI官网找例子,看看有没有类似于这种的功能.当然,官网提供了两种:一是编辑修改datagrid中的某一个列的值:二是编辑修改datagrid中的某一行的值(demo网址:http://www.jeasyui.com/tutorial/datagrid/datagrid12.php). 效果图如下: 看到这两种d