c# devexpress 中的Gridcontrol 添加行问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# devexpress 中的Gridcontrol 添加行问题相关的知识,希望对你有一定的参考价值。

此控件跟VS自带的控件有很大区别。我要实现的是像VS的ListView那样添加和获取数据。请帮忙下。具体就是手动写代码添加行,修改行,获取行,删除行。怎么实现呢? 谢谢。写的是winForm的程序。

1)向Form1中拖入一个GridControl,两个Button

2)后台代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace WindowsFormsApplication1

    public partial class Form1 : Form
    
        List<Student> studentList; 
        int studentId = 1;

        public Form1()
        
            InitializeComponent();
            
            button1.Text = "添加新行";
            button2.Text = "删除选定行";

            BuildDataSource();
        
        //为gridcontrol1准备数据源
        private void BuildDataSource()
        
            studentList = new List<Student>();
            studentList.Add(new Student(studentId++)
                  Name = "张三", Course = "数学", Score = 100 );
            studentList.Add(new Student(studentId++)
                  Name = "李四", Course = "数学", Score = 90 );
            studentList.Add(new Student(studentId++)
                  Name = "王五", Course = "数学", Score = 91 );
            //绑定!
            gridControl1.DataSource = studentList;
        
        //添加行
        private void button1_Click(object sender, EventArgs e)
        
            //添加行,实际上是向数据源(List<Student>集合)添加新的元素
            Student stu = new Student(studentId++) 
                 Name = "钱七", Course = "外语", Score = 34 ;
            studentList.Add(stu);
            //向数据源中新加行后,GridControl中自动会添加新行
            gridControl1.RefreshDataSource();
        
        //删除行
        private void button2_Click(object sender, EventArgs e)
        
            //获取所有被选行
            int[] rowIds = gridView1.GetSelectedRows();
            if (rowIds.Length == 0) return;
            //删除
            foreach (int rowId in rowIds)
            
                int stuId = (int)gridView1.GetRowCellValue(rowIds[0], "Id");
                Student stu = studentList.First(s => s.Id == stuId);
                studentList.Remove(stu);
            
            //从数据源中删除行后,GridControl中自动会删除对于的行
            gridControl1.RefreshDataSource();
        
    

    //----------------------------------------
    //学生成绩类
    class Student
    
        public Student(int id)
        
            Id = id;
        
        //学号
        public int Id  get; private set; 
        //姓名
        public string Name  get; set; 
        //课程
        public string Course  get; set; 
        //成绩
        public float Score  get; set; 
    

3)可直接在GridControl中修改行,不需要额外编程(除非你想校验输入数据的合法性)

------

总结: 对 Devexpress GridControl中增、删、修改,实际上是对数据源(数据集合)的增、删、修改。也就是说:对数据源修改会"反映"到界面的控件上。

参考技术A 用datagridview

以上是关于c# devexpress 中的Gridcontrol 添加行问题的主要内容,如果未能解决你的问题,请参考以下文章

C#开发中控件devexpress

devexpress chartcontrol 控件点击时获取x轴对应的值 最好c#代码

c# devexpress wpf charts问题

C# 控件 DevExpress的DateEdit设置显示日期和时间

C# DevExpress控件 repositoryItemCheckEdit

C# 使用 Devexpress GridControl 显示大图标视图