今天在用GridControl中添加下拉列表遇到些问题,总结出来.项目需求是在GRIDcontrol显示用户信息,其中一列是性别,做成下拉列表,并可以选择。数据库中用int类型表示性别,但是gridcontrol中的下拉列表列RepositoryItemComboBox貌似不支持值和文字显示的功能,或许我还没找到,不过现在用一个变通的办法来解决,
性别 0男 1女,-1请选择
我在用户实体类中添加了一个字段,用于表示性别对应的文字描述。
代码如下
using DevExpress.XtraEditors.Controls;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form2 : Form
{
List<User> list = new List<User>();
public Form2()
{
InitializeComponent();
}
/// <summary>
/// 页面加载
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form2_Load(object sender, EventArgs e)
{
repositoryItemComboBox1.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor;
repositoryItemComboBox1.Items.Add("请选择");
repositoryItemComboBox1.Items.Add("男");
repositoryItemComboBox1.Items.Add("女");
list.Add(new User { Id = 1, UserName = "张三", Sex = 0, SexDes = "男" });
list.Add(new User { Id = 2, UserName = "李四", Sex = 0, SexDes = "男" });
list.Add(new User { Id = 3, UserName = "赵娅", Sex = 1, SexDes = "女" });
list.Add(new User { Id = 3, UserName = "王林", Sex = -1, SexDes = "请选择" });
this.gridControl1.DataSource = list;
}
/// <summary>
/// 获取选择的内容
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < gridView1.RowCount; i++)
{
User user = (User)gridView1.GetRow(i);
if (user.SexDes=="请选择")
{
user.Sex = -1;
}
if (user.SexDes == "男")
{
user.Sex =0;
}
if (user.SexDes == "女")
{
user.Sex =1;
}
MessageBox.Show(user.SexDes);
}
}
}
public class User
{
public int Id { get; set; }
/// <summary>
/// 名称
/// </summary>
public string UserName { get; set; }
/// <summary>
/// 性别0男 1女,-1请选择
/// </summary>
public int Sex { get; set; }
/// <summary>
/// 描述
/// </summary>
public string SexDes { get; set; }
}
}