Completed
Last Updated: 18 Nov 2014 11:26 by ADMIN
ADMIN
George
Created on: 06 Nov 2014 16:27
Category: GridView
Type: Bug Report
0
FIX. RadGridView - Adding columns with chineese characters does not layout the cells correctly
To reproduce:

Populate a RadGridView with the following data:

DataTable vMain = new DataTable("Details");
vMain.Columns.Add("OutServiceDateGuid", typeof(Guid));
vMain.Columns.Add("預估金額", typeof(string));
vMain.Columns.Add("織造", typeof(bool));
vMain.Columns.Add("狀態", typeof(string));
vMain.Columns.Add("委託廠商", typeof(string));       
vMain.Columns.Add("工服單", typeof(string));
vMain.Columns.Add("申請日", typeof(DateTime));
for (int i = 0; i < 40; i++)
{
    vMain.Rows.Add("50ED1E91-868C-42AC-9CA9-00A56F78C3" + i.ToString("0#") ,i.ToString(), true,"", "中心", "103LMH4"+i.ToString(), "2014-10-24 13:04:16.367"); 
}

radGridView1.DataSource = vMain;
radGridView1.Columns["OutServiceDateGuid"].IsVisible = false;    
radGridView1.Columns["申請日"].FormatString = "{0:yyyy/MM/dd}";
radGridView1.Columns["預估金額"].FormatString = "{0:C}";
radGridView1.Columns["狀態"].MaxWidth = 70;
//  this.radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
//this.radGridView1.BestFitColumns(BestFitColumnMode.AllCells);
//  this.radGridView1.MasterTemplate.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
DataTable vWoven = new DataTable("vWoven");
vWoven.Columns.Add("OutServiceDateGuid", typeof(Guid));
vWoven.Columns.Add("NameOrColor", typeof(string));
vWoven.Columns.Add("Qty", typeof(string));
vWoven.Columns.Add("QtyUnitName", typeof(string));
vWoven.Columns.Add("Weight", typeof(string));
vWoven.Columns.Add("SumPrice", typeof(string));
for (int i = 0; i < 40; i++)
{
    vWoven.Rows.Add("50ED1E91-868C-42AC-9CA9-00A56F78C3" + (i + 1).ToString("0#"), " vWoven中心" + i.ToString(), i, i, i);
}

GridViewTemplate template1 = new GridViewTemplate();
template1.Caption = "織造";
template1.DataSource = vWoven;
template1.Columns["OutServiceDateGuid"].IsVisible = false;
template1.Columns["NameOrColor"].HeaderText = "成品名與規格";
template1.Columns["Qty"].HeaderText = "數量";
template1.Columns["QtyUnitName"].HeaderText = "單位";
template1.Columns["Weight"].HeaderText = "重量";
template1.Columns["SumPrice"].HeaderText = "金額";
//template1.BestFitColumns(BestFitColumnMode.AllCells);
template1.AllowRowResize = false;
template1.ShowColumnHeaders = true;
template1.ShowRowHeaderColumn = true;
template1.AllowAddNewRow = false;
template1.AllowDeleteRow = false;
template1.AllowDragToGroup = false;
this.radGridView1.Templates.Add(template1);

GridViewRelation relation1 = new GridViewRelation(this.radGridView1.MasterTemplate);
relation1.ChildTemplate = template1;
relation1.ParentColumnNames.Add("OutServiceDateGuid");
relation1.ChildColumnNames.Add("OutServiceDateGuid");
this.radGridView1.Relations.Add(relation1);

DataTable vDye = new DataTable("vDye");
vDye.Columns.Add("OutServiceDateGuid", typeof(Guid));
vDye.Columns.Add("NameOrColor", typeof(string));
vDye.Columns.Add("ColorNo", typeof(string));       
vDye.Columns.Add("Qty", typeof(string));
vDye.Columns.Add("QtyUnitName", typeof(string));
vDye.Columns.Add("Weight", typeof(string));
vDye.Columns.Add("SumPrice", typeof(string));
for (int i = 0; i < 20; i++)
{
    vDye.Rows.Add("50ED1E91-868C-42AC-9CA9-00A56F78C3" + (i + 1).ToString("0#"), " vDye中心" + i.ToString(),"", i, i, i);
}

GridViewTemplate template2 = new GridViewTemplate();
template2.Caption = "染整";
template2.DataSource = vDye;
template2.Columns["OutServiceDateGuid"].IsVisible = false;

template2.Columns["NameOrColor"].HeaderText = "顏色";
template2.Columns["ColorNo"].HeaderText = "色號";
template2.Columns["Qty"].HeaderText = "數量";
template2.Columns["QtyUnitName"].HeaderText = "單位";
template2.Columns["Weight"].HeaderText = "重量";
template2.Columns["SumPrice"].HeaderText = "金額";
//template2.BestFitColumns(BestFitColumnMode.AllCells);
template2.AllowAddNewRow = false;
template2.AllowRowResize = false;
template2.ShowColumnHeaders = true;
template2.ShowRowHeaderColumn = true;
template2.AllowDeleteRow = false;
template2.AllowDragToGroup = false;
this.radGridView1.Templates.Add(template2);

GridViewRelation relation2 = new GridViewRelation(this.radGridView1.MasterTemplate);
relation2.ChildTemplate = template2;
relation2.ParentColumnNames.Add("OutServiceDateGuid");
relation2.ChildColumnNames.Add("OutServiceDateGuid");
this.radGridView1.Relations.Add(relation2);

DataTable vAppoint = new DataTable("vAppoint");
vAppoint.Columns.Add("OutServiceDateGuid", typeof(Guid));
vAppoint.Columns.Add("NameOrColor", typeof(string));
vAppoint.Columns.Add("Qty", typeof(string));
vAppoint.Columns.Add("QtyUnitName", typeof(string));
vAppoint.Columns.Add("Weight", typeof(string));
vAppoint.Columns.Add("SumPrice", typeof(string));
for (int i = 0; i < 20; i++)
{
    vAppoint.Rows.Add("50ED1E91-868C-42AC-9CA9-00A56F78C3" + (i + 2).ToString("0#"), "vAppoint中心" + i.ToString(), i, i, i);
}
GridViewTemplate template3 = new GridViewTemplate();
template3.Caption = "委外";
template3.DataSource = vAppoint;
template3.Columns["OutServiceDateGuid"].IsVisible = false;

template3.Columns["NameOrColor"].HeaderText = "委外內容";
template3.Columns["SumPrice"].HeaderText = "金額";
//template3.BestFitColumns(BestFitColumnMode.AllCells);
template3.AllowAddNewRow = false;
template3.AllowRowResize = false;
template3.ShowColumnHeaders = true;
template3.ShowRowHeaderColumn = true;
template3.AllowDeleteRow = false;
template3.AllowDragToGroup = false;
this.radGridView1.Templates.Add(template3);

GridViewRelation relation3 = new GridViewRelation(this.radGridView1.MasterTemplate);
relation3.ChildTemplate = template3;
relation3.ParentColumnNames.Add("OutServiceDateGuid");
relation3.ChildColumnNames.Add("OutServiceDateGuid");
this.radGridView1.Relations.Add(relation3);


DataTable vMembrane = new DataTable("vMembrane");
vMembrane.Columns.Add("OutServiceDateGuid", typeof(Guid));
vMembrane.Columns.Add("NameOrColor", typeof(string));
vMembrane.Columns.Add("Qty", typeof(string));
vMembrane.Columns.Add("QtyUnitName", typeof(string));
vMembrane.Columns.Add("Weight", typeof(string));
vMembrane.Columns.Add("SumPrice", typeof(string));
//for (int i = 0; i < 40; i++)
//{
//    vMembrane.Rows.Add("50ED1E91-868C-42AC-9CA9-00A56F78C3" + (i + 3).ToString("0#"), "vMembrane中心" + i.ToString(), i, i, i);
//}

GridViewTemplate template4 = new GridViewTemplate();
template4.Caption = "膜";
template4.DataSource = vMembrane;
template4.Columns["OutServiceDateGuid"].IsVisible = false;

template4.Columns["NameOrColor"].HeaderText = "成品規格";
template4.Columns["Qty"].HeaderText = "數量";
template4.Columns["QtyUnitName"].HeaderText = "單位";
template4.Columns["SumPrice"].HeaderText = "金額";
//template4.BestFitColumns(BestFitColumnMode.AllCells);
template4.AllowAddNewRow = false;
template4.AllowRowResize = false;
template4.ShowColumnHeaders = true;
template4.ShowRowHeaderColumn = true;
template4.AllowDeleteRow = false;
template4.AllowDragToGroup = false;
this.radGridView1.Templates.Add(template4);

GridViewRelation relation4 = new GridViewRelation(this.radGridView1.MasterTemplate);
relation4.ChildTemplate = template4;
relation4.ParentColumnNames.Add("OutServiceDateGuid");
relation4.ChildColumnNames.Add("OutServiceDateGuid");
this.radGridView1.Relations.Add(relation4);

DataTable vCheck = new DataTable("vCheck");
vCheck.Columns.Add("OutServiceDateGuid", typeof(Guid));
vCheck.Columns.Add("NameOrColor", typeof(string));
vCheck.Columns.Add("Qty", typeof(string));
vCheck.Columns.Add("QtyUnitName", typeof(string));
vCheck.Columns.Add("Weight", typeof(string));
vCheck.Columns.Add("SumPrice", typeof(string));
vCheck.Columns.Add("CheckItem", typeof(string));
//for (int i = 0; i <10; i++)
//{
//    vCheck.Rows.Add("50ED1E91-868C-42AC-9CA9-00A56F78C3" + (i + 4).ToString("0#"), "中心" + i.ToString(), i, i, i);
//}

GridViewTemplate template5 = new GridViewTemplate();
template5.Caption = "檢測";
template5.DataSource = vCheck;

template5.Columns["OutServiceDateGuid"].IsVisible = false;

template5.Columns["NameOrColor"].HeaderText = "樣品名稱與規格";
template5.Columns["CheckItem"].HeaderText = "檢驗項目";
template5.Columns["CheckItem"].WrapText = true;
template5.Columns["Qty"].HeaderText = "數量";
template5.Columns["QtyUnitName"].HeaderText = "單位";
template5.Columns["SumPrice"].HeaderText = "金額";
//template5.BestFitColumns(BestFitColumnMode.AllCells);
template5.AllowAddNewRow = false;
template5.AllowRowResize = false;
template5.ShowColumnHeaders = true;
template5.ShowRowHeaderColumn = true;
template5.AllowDeleteRow = false;
template5.AllowDragToGroup = false;

this.radGridView1.Templates.Add(template5);

GridViewRelation relation5 = new GridViewRelation(this.radGridView1.MasterTemplate);
relation5.ChildTemplate = template5;
relation5.ParentColumnNames.Add("OutServiceDateGuid");
relation5.ChildColumnNames.Add("OutServiceDateGuid");
this.radGridView1.Relations.Add(relation5);

Open the application and scroll the grid a bit, you will see that any newly layouted cell will be on the most left corner.

Workaround:

Use the following code after populating the grid with data:

this.radGridView1.Columns[3].Width += 5;
this.radGridView1.Columns[3].Width -= 5;

0 comments