我在winform里,有好多属性没有,应该是我不会吧,希望高手帮忙,让我能在winform下实现此功能。找的代码如下:
protected void dgBind()//绑定DataGrid
{
xkpgBS=new XKPG.XKPGbasic();
myDs=new DataSet();
myDs=xkpgBS.CheckResult(Session["xk"].ToString().Trim()); dgResult.DataSource=myDs;
dgResult.DataMember="mytable";
dgResult.DataBind(); } private void SpanGrid()//合并相同单无格
{
int i; int j; int intSpan; int NowSpan=0; string strTemp; 
j=dgResult.Items.Count; 
for(i=0; i<dgResult.Items.Count;i++) 

intSpan=1; 
strTemp =dgResult.Items[i].Cells[0].Text; for(j=i+1;j<dgResult.Items.Count;j++) 

if(strTemp.Equals(dgResult.Items[j].Cells[0].Text.ToString().Trim()))

intSpan += 1; 
dgResult.Items[i].Cells[0].RowSpan = intSpan; 
dgResult.Items[j].Cells[0].Visible=false; 
}
}
NowSpan+=intSpan;
i =NowSpan-1 ;

解决方案 »

  1.   

    void SpanGrid(DataGrid DG) 

    int i; 
    int j; 
    int intSpan; 
    string strTemp,strTemp1; 
    bool flag = true; 
    for ( i = 0; i <= DG.Items.Count - 1; i++) 

    intSpan = 1; 
    strTemp = DG.Items[i].Cells[0].Text.ToString().Trim(); 
    if (flag == true) 
    {
    DG.Items[i].BackColor = Color.LemonChiffon;
    for ( j = i + 1; j <= DG.Items.Count - 1; j++) 

    strTemp1 = DG.Items[j].Cells[0].Text.ToString().Trim();
    if (string.Compare(strTemp, strTemp1) == 0) 
    {
    intSpan += 1; 
    //设置控件中单元格跨越的行数为intspan
    DG.Items[i].Cells[1].RowSpan = intSpan;
    //把内容相同单元格隐藏
    DG.Items[j].Cells[1].Visible = false;
    DG.Items[j].BackColor = Color.LemonChiffon;

    else 

    goto exitForStatement0; 


    exitForStatement0: ; 
    i = j - 1;
    flag = false;
    intSpan = 1;

    else 

    DG.Items[i].BackColor = Color.LightYellow;
    for ( j = i + 1; j <= DG.Items.Count - 1; j++) 

    strTemp1 = DG.Items[j].Cells[0].Text.ToString().Trim();
    if (string.Compare(strTemp, strTemp1) == 0) 

    intSpan += 1; 
    DG.Items[i].Cells[1].RowSpan = intSpan; 
    DG.Items[j].Cells[1].Visible = false; 
    DG.Items[i].BackColor = Color.LightYellow;

    else 

    goto exitForStatement1; 


        exitForStatement1: ; 
    i = j - 1; 
    flag = true;
    intSpan = 1;


    }
      

  2.   

    我的items属性没有啊,你是在什么下写的,我是winform下的。没有这个属性啊?
      

  3.   

    我是在WebForm下的,Winform下也因该有的!总要的是,思想是一样的啊!呵呵!
      

  4.   

    void SpanGrid(DataGrid DG) 

    int i; 
    int j; 
    int intSpan; 
    string strTemp,strTemp1; 
    bool flag = true; 
    for ( i = 0; i <= DG.Items.Count - 1; i++) 

    intSpan = 1; 
    strTemp = DG.Items[i].Cells[0].Text.ToString().Trim(); 
    if (flag == true) 
    {
    DG.Items[i].BackColor = Color.LemonChiffon;
    for ( j = i + 1; j <= DG.Items.Count - 1; j++) 

    strTemp1 = DG.Items[j].Cells[0].Text.ToString().Trim();
    if (string.Compare(strTemp, strTemp1) == 0) 
    {
    intSpan += 1; 
    //设置控件中单元格跨越的行数为intspan
    DG.Items[i].Cells[1].RowSpan = intSpan;
    //把内容相同单元格隐藏
    DG.Items[j].Cells[1].Visible = false;
    DG.Items[j].BackColor = Color.LemonChiffon;

    else 

    goto exitForStatement0; 


    exitForStatement0: ; 
    i = j - 1;
    flag = false;
    intSpan = 1;

    else 

    DG.Items[i].BackColor = Color.LightYellow;
    for ( j = i + 1; j <= DG.Items.Count - 1; j++) 

    strTemp1 = DG.Items[j].Cells[0].Text.ToString().Trim();
    if (string.Compare(strTemp, strTemp1) == 0) 

    intSpan += 1; 
    DG.Items[i].Cells[1].RowSpan = intSpan; 
    DG.Items[j].Cells[1].Visible = false; 
    DG.Items[i].BackColor = Color.LightYellow;

    else 

    goto exitForStatement1; 


        exitForStatement1: ; 
    i = j - 1; 
    flag = true;
    intSpan = 1;


    }
      

  5.   

    晕,先谢谢了!不过,我在winform下尝试改写了,但是由于属性不一样的原因,没有办法实现,应该是我不熟悉吧。问过别人,说还是在数据源下做文章。 但我这个也不希望放弃,还希望那位帮忙!
      

  6.   

    winform 中是没有Items属性的。我也找了很久,思想虽然这样,但还是此路不通!
      

  7.   

    public DataSet GetUserQueueMod1(int col,DataSet ds) //col你想合并的列
    {
    string strTemp ;
    DataTable dt = ds.Tables[0];
    int intCout = dt.Rows.Count-1; for(int i=0;i<intCout;i++)
    {
    strTemp = dt.Rows[i][0].ToString();
    for(int j=i+1;j<=intCout+1;j++)
    {
    if(j != intCout+1)
    {
    if(strTemp == dt.Rows[j][0].ToString())
    {
    dt.Rows[i][col] += " " + (string)dt.Rows[j][col];
    dt.Rows[j].Delete();
    }  
    else
    {
    i = j-1;
    break;
    }
    }
    else
    {
    return ds;
    }
    }
    }
    return ds;
    }
      

  8.   

    楼上的这种合并有点太牵强了吧!我想如果能向excel中的合并单元格就好了!