0

私のフォームには、2 つのフィールドが設定されています。アイテムの場所とサブエリア。ユーザーが選択した場所に基づいて、サブエリア フィールドに入力しようとしています。たとえば、「場所 4」を選択します。その場所のサブエリアは、たとえば、A、B、および C の 3 つだけです。場所ボックスで選択すると、サブエリア ボックスには A、B、および C のみが表示されます。すべての場所があり、許可されていますappsettings.xml という xml ファイルのサブ領域。プログラムに xml ファイルを読み込ませ、サブ領域フィールドに有効なデータのみを入力させるにはどうすればよいですか? 以下は、xml ファイルの設定方法の例です。

<?xml version="1.0" encoding="utf-8" ?> 
 <MerchandiseTrack>

   <Merchandise_Zones Application_Data="Test-Run">

      <KeyBoard_App>
        <AppString>c windows osk.exe</AppString> 
      </KeyBoard_App>

 <Storage_Location>

     <head id="Location">                // Name of box on app
       <body id="04">                    // Name of Location within the box
         <Sub-Area>A, B, C,</Sub-Area>   // Allowed sub-areas
       </body>
     </head>

     <head id="Location">                // Name of box on app  
      <body id="05">                     //Name of Location within the box
         <Sub-Area>P, L, R, B</Sub-Area> // Allowed sub-areas 
      </body>
     </head>

     <head id="Location">                // Name of box on app
      <body id="14">                     //Name of Location within the box
       <Sub-Area>A, X, C </Sub-Area>     //Name of Location within the box
      </body>
    </head>

  </Storage_Location>
 </Merchandise_Zones>
</MerchandiseTrack>
4

2 に答える 2

1

でイベントを設定しSelectedIndexChangedます。次に、locationID を読み取り、ファイルからノードを選択します。

        XmlDocument doc = new XmlDocument();
        doc.Load(@"path/to/file.xml");
        XmlNode subarea = doc.SelectSingleNode("/MerchandiseTrack/Merchandise_Zones/Storage_Location/head/body[@id=" + locationComboBox.SelectedItem.ToString()+ "]/Sub-Area");
        string[] areas = subarea.InnerText.Split(',');
        foreach (string area in areas)
        {
           subAreaComboBox.Items.Add(area);
        }

これには、リストに末尾のコンマがない (!) ことが含まれます (現時点では最初の場所のように)。その場合は、コードを拡張して削除する必要があります。

于 2012-08-06T12:22:22.267 に答える
0

関連するかなりの数の手順があります。ドキュメントをロードするために使用したい場合XDocument.Loadは、UI にバインドする必要があります。WPFを使用している場合、値を入力するためにItemsControlの派生物がありますが、TextBoxesについて言及したという事実は注意が必要です。ASP.NET では、同じ ID を指定してすべてのコントロールを再作成し、それらにアクセスするために ViewState をロードするときにページに再度追加する必要があるため、同じことがさらに当てはまります。

それらをバインド/再作成するときの鍵は、すべての ID/名前属性が同じままであることを確認することです。

私の個人的な経験では、WPF の動的コントロールは面倒ですが、ASP.NET では適切に機能させるのは非常に困難です。

于 2012-08-06T12:23:39.750 に答える