2013-08-07 2 views
2

에서 내 데이터를 DataGridView를로드하는 방법 : (XMLElements, XMLNodeLists 몇 루프 사용) 내가 원하는 방식으로 분석하고 콘솔 응용 프로그램에 표시 할 수 있습니다나는이 XML 얼마나 XML

<container_1 attr1="..." attr2="..." attr3="..."> 
    <rekord_1> 
    <type_1 attr1="..." attr2="..." ... /> 
    <type_2 attr1="..." attr2="..." ... /> 
    </rekord_1> 
    <rekord_2>... </rekord_2> 
    . 
    . 
    <rekord_N> ... </rekord_N> 
</container_1> 

을하지만, GUI 및 표보기로 앱을 만들고 싶습니다. 내 양식 앱에서 XML을 읽을 수는 있지만 지금은 1 개의 태그 만 처리 할 수 ​​있습니다. 예를 들어, container_1 태그를 얻는 경우 container_1의 속성 만 출력하지만 표보기의 container_1 아래의 레코드도 표시하려고합니다.

콘솔에서 내 이전 프로그램처럼 볼 수있게하려고합니다.

요소/속성으로 작업 할 수 있도록 XML에서 데이터를 가져올 수있는 방법은 무엇입니까? 테이블보기에서 위치를 설정하려고하기 때문에. 어떤 문서를 읽어야합니까? 아니면 나에게 유용 할 수있는 몇 가지 예가 있는가?

편집 (. 팔월 20) 여기서 코드의 주요 부분이다

private void button1_Click(object sender, EventArgs e) 
    { 
     Stream input=null; 
     OpenFileDialog dialog = new OpenFileDialog(); 
     openFileDialog1.InitialDirectory = "C:/"; 
     openFileDialog1.Filter = "xml file | *.xml"; 
     openFileDialog1.FilterIndex = 2; 
     openFileDialog1.RestoreDirectory = true; 

     if (openFileDialog1.ShowDialog() == DialogResult.OK) { 
      try 
      { 
       if ((input = openFileDialog1.OpenFile()) != null) 
       { 
        using (input) 
        { 
         XmlReader xmlFile = XmlReader.Create(input, new XmlReaderSettings()); 
         DataSet dataSet = new DataSet(); 
         dataSet.ReadXml(xmlFile); 
         DataSet containers = new DataSet(); 
         dataGridView1.DataSource = dataSet.Tables[tag]; 
         xmlFile.Close(); 
        } 
       } 
      } 
      catch (Exception ex) { 
       MessageBox.Show("ERROR"); 
      } 
     } 
    } 

이 기능하지 잘 디스플레이 내 태그는 컨테이너 또는 REKORD이며,이 출력을 취하면 : outputs

하지만 container1 + rekords, container2 + rekords 등을 표시 할 수는 없으며 동시에 모든 컨테이너 또는 모든 rekord를 표시 할 수 있습니다.

+0

당신은 이미 시도한 것과 출력이 어떻게 생겼는지에 대한 코드를 보여줄 수 있습니까? – Malachi

+0

나는 그것을했다. 늦은 답장에 대해 미안하지만, 당신이 나에게 도왔다는 것에 감사드립니다. – Gabor

답변

0

원하는 것은 데이터 집합으로 XML을 가져온 다음 해당 데이터 집합을 Gridview에 공급하는 것입니다. 누군가가 당신이해야하는 여러 DataTablesDataSet입니다뿐만 아니라

Any way to populate items from xml to Datagridview using c#

추가

스택 거래소에이 질문을 이미 것처럼

는 그것은 보인다. DataGridView은 한 번에 DataTable 하나만 표시 할 수 있습니다.

때 코드

dataGridView1.DataSource = dataSet.Tables[tag]; 

tag 당신이 당신의 데이터 집합의 container_1을 다시 당기는에 container_1을 넣어.

DataGridView, DataSetDataTable에 대한 MSDN을 보면이 기능이 실제로 작동하는지 확인할 수 있습니다.

어쩌면 또한 해치지 않을 수 C# DataGridView Tutorial

아웃이를 확인.

+0

그 질문을 찾았습니다. 제 경우에는 프로그램에 말하면 그 태그는 container_1입니다.이 태그는 container_1과 그 좋은 것에 대한 모든 정보를 나에게 보여 주지만 동시에 container_1 태그 아래의 연결된 모든 레코드를보고 싶습니다. 그리고 이것이 내 주요 문제입니다 , 나는 그것을 동시에 할 수 없다. – Gabor

+0

당신의'container_1','container_2'는 아마도 데이터 세트에 별도의 테이블로 나타날 것입니다. – Malachi

+0

내 계획에 대한 해결책이 없습니까? 난 그냥 한 테이블에있는 container_1을 표시하는 간단한 테이블보기를 원해요. rekords가 다음 몇 개의 행, container_2 등이 나온 후에 ... 당신은 어떤 생각을 가지고 있습니까? Thx – Gabor