1. 将NewItemRowPosition属性设置为Top或Bottom,在这样的新行中输入数据后,会自动添加到绑定的数据源中的,如果你希望在按回车时焦点跳至下一列,只需要设置GridView的OptionNavigations->EnterMoveNextColumn为True即可。
2. 当在最后一可见列按回车,数据自动在GridView中显示出来。很多时候我们真的只想单纯的手动添加一行数据,而不想修改数据源再回来绑定。如果你有这种想法。
3. 我已经两次遇到过这样的问题,尝试手动添加,整整两天时间都没有成功。网上说的方法基本都是绑定数据源,偶尔有人说用SetRowCellValue方法,用法如下:gridView1.SetRowCellValue(0, gridView1.Columns[0], "qwe")。
4. 即在0行0列的单元格设为qwe值,看起来多好,可问题是它就是不显示,更改了无数属性都无法生效,真怀疑是不是dev公司把这个方法取消了,如果哪位使用了这个方法成功的添加了数据,那么请通知我一下,万分感谢。
5. 所以如果各位初学者看到了我这篇文章就不要花时间去用上述方式添加了(当然时间多时可以试试),就我得出的结论是gridcontrol添加数据的方法只能去修改数据源。
6. gridcontrol数据源也分两种,datetable和list,datetable想要添加一行数据可以new一个新行,分别设定各列的值,再将新行add到datetable;list则new一个新的实例,设置各字段的值,再add到list即可。详细方法网上太多,不在此赘述。
1)向Form1中拖入一个GridControl,两个Button
2)后台代码
using Systemusing 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中增、删、修改,实际上是对数据源(数据集合)的增、删、修改。也就是说:对数据源修改会"反映"到界面的控件上。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)