2009-09-26 3 views
1

XML 파일에서 데이터를 읽는 작은 HTML/JavaScript 기반의 미니 웹 응용 프로그램을 만들었습니다.WinForms - 사용자 지정 XML 편집기

이제이 XML 파일에 대한 오프라인 WinForms 편집기를 만들어야합니다. XML 파일을 사용하여 내가하는 방식으로 데이터를 저장하는 것이 이상적이지는 않지만 XML 파일을 대체 할 수는 있지만 웹 사이트에 정적 파일 만 사용할 수 있다는 점을 충분히 알고 있습니다. 업데이트됩니다.

미니 웹 앱을 사용하면 원격 차량 스타터를 구매하는 고객이 차량의 제조업체, 모델 및 연도를 선택하고 설치에 필요한 추가 구성 요소 목록을 볼 수 있습니다. 이 데이터는 XML 형식으로 각 구성 요소 유형의 특성뿐만 아니라 제조업체, 모델, 연도를 나타내는 특성을 가진 <vehicle> 요소로 표시됩니다. 에디터

요구 사항은 : 격자

  • 디스플레이 차량 레코드
  • 값에 기초하여 각각의 열의 자동 완성 이미
  • 컬럼
  • 의 임의의 조합에 기초하여 행 필터링을 허용 입력 허용

다음을 시도했습니다.

  • DataGridView와 데이터 바인딩을 사용하지만 데이터 바인딩/데이터 세트/etc는 데이터 소스로 XML 파일을 쉽게 재생하지 못하는 것 같습니다. 나는 이것을 몇 시간 동안 씨름 한 후 단념했다.
  • 나만의 "행"컨트롤을 만들고 각 요소의 인스턴스를 Panel 컨트롤에 삽입했다. 수백 개의 차량 기록이 있기 때문에 이것은 성능상의 이유로 비 시발점입니다.

저는 일반적으로 웹 사용자이므로이 WinForms 항목은 저에게 미지의 영역입니다. 이 편집기의 요구 사항을 달성하는 가장 쉬운 방법은 무엇입니까?

+0

XML 파일에 모든 것이 저장되어있는 경우 백엔드 (예 : PHP)에서 파일을 읽고 JSON을 페이지에 반환하여 JavaScript가 쉽고 빠르게 읽을 수 있습니까? 아니면 당신이 만든 HTML/JS 응용 프로그램을 사용해야합니까? – jakeisonline

+0

죄송 합니다만 명확하지 않은 경우 - 웹 앱이 이미 완료되어 작동 중입니다. jQuery는 JSON과 마찬가지로 XML에서도 작동합니다. 내가 겪고있는 문제는 XML 파일 용 오프라인 편집기를 만드는 것입니다. –

답변

0

XML 파일을 메모리로 읽고 해당 XML 파일을 기반으로 형식화 된 데이터 집합을 만드는 것이 좋습니다. XML 파일의 형식을 제어 할 수 있다면 형식화 된 데이터 집합으로 시작하여 XML로 직렬화하여 구조 템플릿을 얻은 다음 다른 방법으로 작업 할 수 있습니다. XML 파일을 편집하고 다음을 사용하여 데이터 집합을로드 할 수 있습니다. XML 파일에서 비 직렬화.

This article은 형식화 된 데이터 집합과 DataGridView에 대해 설명하고 입력 필터링 방법에 대한 훌륭한 예제를 제공합니다.

마지막으로 무료 Krypton Toolkit을보고 싶을 수 있습니다. 이들 컨트롤은 일반적으로 대체되는 Winforms보다 더 강력합니다. 나는 그들이 DataGridView를 위해 구현 된 자동 완성을 가지고 있다고 믿는다. (그들은 TextBox를 위해 확실히한다.) 이 도구를 사용하면 실제로 무료 도구 키트와 상용 도구를 모두 다운로드하게됩니다. 전체 제품을 구매할 계획이 아니라면 툴킷 DLL 만 참조하십시오.

1

각 요소를 나타내는 작은 UserControls를 많이 포함하는 UserControl을 만드는 대신 데이터를 단일 그래픽으로 렌더링하는 역할을하는 클래스로 요소를 시각적으로 나타내는 논리를 캡슐화하는 것이 가장 바람직하다고 생각합니다. surface (UserControls의 논리를 캡슐화하는 것과 반대).

편집 기능이있는 "행"컨트롤을 이미 만들었으므로 인스턴스를 만들고 사용자가 클릭 할 때 컨트롤 위에 "플로팅"하여이 기능을 사용할 수 있습니다 그것.

다소 비슷한 질문이 이전 대답은 :

Need help creating control to display data

기본 원리를 보여줍니다. 이 방법을 사용하면 한 번에 두 개의 컨트롤 만 인스턴스화하여 매우 큰 XML 문서를 편집 할 수 있습니다.

관련 문제