2013-03-27 3 views
0

데이터 그리드의 셀 값을 XML로 출력하려고합니다. 그리드의 셀은 ALLOCATED, AVAILABLE, OCCUPIED 값을 갖는 콤보 박스 셀입니다.그리드에서 XML로 값 쓰기 #

<Cell XLoc="1" YLoc="1" Status="AVAILABLE"/> 
<Cell XLoc="1" YLoc="2" Status="OCCUPIED"/> 
<Cell XLoc="1" YLoc="3" Status="OCCUPIED"/> 
(상태는 각 셀의 콤보 박스에서 선택된 값이고 XLOC는 로우 인덱스이고, YLOC 그 특정 셀의 컬럼 인덱스이다) 아래에 명시된 바와 같이 내 XML 출력 형식이어야 할 필요

현재 내가 목록을 작성하고 그리드 예에서 combox 선택된 값을 저장하고, 이용 가능한 점령 ....

private List<string> Grid_Values() 
{ 
    List<string> CellValues = new List<string>(); 

    for (int i = 0; i < ToolMapGrid.Rows.Count; i++) 
    { 
     for (int j = 0; j < ToolMapGrid.ColumnCount; j++) 
     { 
      CellValues.Add(ToolMapGrid.Rows[i].Cells[j].Value.ToString()); 

     } 
    } 
    ... 
} 

나는이 방법으로 XML에 위의 값을 쓰고 있어요 :.

List<string> GridValues = Grid_Values(); 
foreach (string item in GridValues) 
{ 
    writer.WriteStartElement("Cell"); 
    writer.WriteAttributeString("Status",item); 
    writer.WriteEndElement(); 
} 

XML 파일에 Xloc 및 Yloc 값을 쓰는 방법을 이해하지 못합니다. 콤보 값을 목록으로 반환하지만 같은 방법으로 행과 열 인덱스를 반환하는 방법과 XML 파일에 쓰는 방법

도와주세요. 다음과 같은 코드를 그 후

class XmlInfo 
{ 
    string value{get; set;} 
    int column {get: set;} 
    int row {get; set; } 
} 

변경 : : 사전

+1

는 데이터 구조로 데이터 그리드를 사용하지 마십시오 근무 방법이다. 그리드가 DataBound 인 테이블에서 씁니다. –

+0

마치 행과 열의 수를 입력하고 그리드를 생성하는 그리드 버튼을 생성해야합니다. 그런 다음 그리드의 모든 셀에서 선택해야합니다. 완료되면 XML 생성 버튼을 클릭하여 DataGrid가 필수적이되도록 XML에 모든 내용을 씁니다. – Pinky

답변

0

감사는 새로운이 같은 세 가지 속성이 있습니다 XmlInfo라는 클래스를 생성

private List<XmlInfo> Grid_Values() 
{ 
    List<XmlInfo> CellValues = new List<XmlInfo>(); 

    for (int i = 0; i < ToolMapGrid.Rows.Count; i++) 
    { 
     for (int j = 0; j < ToolMapGrid.ColumnCount; j++) 
     { 
      XmlInfo nfo = new XmlInfo { 
       value = ToolMapGrid.Rows[i].Cells[j].Value.ToString(), 
       row = i, 
       column = j} 
      CellValues.Add(nfo); 
     } 
    } 
} 

그런 다음 당신이 좋아하는 코드를 사용할 수 있습니다 이 :

List<XmlInfo> GridValues = Grid_Values(); 
foreach (XmlInfo item in GridValues) 
{ 
    writer.WriteStartElement("Cell"); 
    writer.WriteAttributeString("Status", item.value); 
    writer.WriteAttributeString("XLoc", item.column); 
    writer.WriteAttributeString("YLoc", item.row); 
    writer.WriteEndElement(); 
} 

직접 입력했을 때 구문 오류가 있는지 검토해보십시오. 편집장에게 나는 뭔가를 놓친 것 같습니다.

+0

이렇게 분해하고 실제로 누락 된 부분을 확인하십시오. 'XmlInfo nfo = new XmlInfo(); nfo.value = ToolMapGrid.Rows [i] .Cells [j] .Value.ToString(); nfo.row = i; nfo.column = j;' – Kenneth

+0

정말 고마워요. :) – Pinky

0

이 내가 구현하고 :)

 for (int i = 0; i < ToolMapGrid.Rows.Count; i++) 
     { 
      for (int j = 0; j < ToolMapGrid.ColumnCount; j++) 
      { 
       writer.WriteStartElement("Cell"); 
       writer.WriteAttributeString("XlOC", (i + 1).ToString()); 
       writer.WriteAttributeString("YLOC", (j + 1).ToString()); 
       writer.WriteAttributeString("Status", ToolMapGrid.Rows[i].Cells[j].Value.ToString()); 
       writer.WriteEndElement(); 
      } 
     }