如何将2行列合并为只有1行数据视图的另一列

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (39)

嗨,我正在使用datagridview在c#中创建一个表单,我有一个类Option

public class Option
{
    public string Description;
    public string scores;
 }

所以现在我将多个选项加载到datagridview中,它看起来像这样

|Description|Scores|
      A       1-2
      B       3-4
      C       5-6
      D        7

我想让用户只需点击单元格即可选择分数,但由于一个描述可以有2个不同的分数,我能做的最多就是制作一个单独的滑块或复选框区域,供他们选择分数。我想要做的是根据该描述的分数将得分单元分成不同的行。所以描述中的1行可能在得分列中有2行,是否可能?之后我将使用DGV.SelectedCell根据用户选择检索和计算得分

 |Description|Score|
 |           |  1  |
 |    A      |-----| 
 |           |  2  |
 |-----------------|
 |           |  3  |
 |    B      |-----|
 |           |  4  |
 |-----------------|
 |           |  5  |
 |     C     |-----|
 |           |  6  |
 |-----------------|
 |     D     |  7  |
 |-----------------|

编辑我的代码

 Dictionary<int,Option> Question = new Dictionary<int,option>();
 //created dictionary of options for a question
 DataTable DT = new DataTable();
 DT.Columns.Add("Description");
 DT.Columns.Add("Scores");

 foreach (KeyValuePair<int, Option> item in Question)
{ DataRow dr = DT.NewRow();
  Option Opt = item.Value;
  dr["Description"] = opt.Description;
  dr["Scores"] = opt.scores;
 }

然后我只是将DGV源设置为数据表

提问于
用户回答回答于

我在移动设备上并且没有IDE,所以请原谅我,如果这不是开箱即用的,你需要稍微改变它以使其工作:

string score = dr["Weightage"].Text;  //save current value from "Weightage"
string[] scores = score.split('-');   //splits it into 2 parts
DT.Columns.Remove("Weightage");       //remove old column
DT.Columns.Add("WeightageA");         //create new columns
DT.Columns.Add("WeightageB");
dr["WeightageA"] = scores[0];         //set column values
dr["WeightageB"] = scores[1];

扫码关注云+社区

领取腾讯云代金券