如何将具有2行的列合并到仅具有1行数据的另一列

时间:2019-05-06 06:05:53

标签: c#

嗨,我正在使用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源设置为数据表

1 个答案:

答案 0 :(得分:1)

我在移动设备上,并且没有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];