回复 7楼qqlww的帖子
上面已经解释过,ComboBox的Editor的展示就是这样的策略。
如果你需要C1FlexGrid的列支持DisplayValue和Value,展示的是DisplayValue,存入的值是Value,可以使用C1FlexGrid的DataMap功能。
你的代码使用DataMap后如下所示:
- DataTable dtBind = new DataTable("dtBind");
- dtBind.Columns.Add(new DataColumn("display",typeof(string)));
- dtBind.Columns.Add(new DataColumn("value", typeof(int)));
- DataRow dr;
- for (int i = 0; i < 3; i++)
- {
- dr = dtBind.NewRow();
- dr["display"] = "d"+(i+1).ToString();
- dr["value"] = i + 1;
- dtBind.Rows.Add(dr);
- }
- dtGrid = new DataTable("dtGrid");
- dtGrid.Columns.Add(new DataColumn("RType",typeof(int)));
- DataRow drGrid;
- for (int i = 0; i < 3; i++)
- {
- drGrid = dtGrid.NewRow();
- drGrid["RType"] = i + 1;
- dtGrid.Rows.Add(drGrid);
- }
- var mapCat = new Dictionary<int, string>();
- foreach (DataRow row in dtBind.Rows)
- {
- var key = (int)row["value"];
- var val = (string)row["display"];
- mapCat[key] = val;
- }
- this.c1FlexGrid1.DataSource = dtGrid;
- // add data maps
- this.c1FlexGrid1.Cols["RType"].DataMap = mapCat;
复制代码
这样子,就会将value的值存入dtGrid,但展示的是display的值。 |