特定の名前/パターンのIDを持つすべてのコントロールにプロパティを追加する - ASP.NET(VB)

IDに「DATE」という単語が含まれているページにいくつかのコントロールがあります。これらは日付のみの特定のテキストボックスです。

以下は、IDの "DATE"を含む各テキストボックスコントロールに対して何を行う必要があるかの例です:

Birth_Date.Text = fnLib.formatDate(Birth_Date.Text, 1)

Anniversary_Date.Text = fnLib.formatDate(Anniversary_Date.Text, 1)

単一のコントロールごとにこれを行うのではなく、何らかのFor Each Loopでこれを行う方法がありますか?私はまだASP.Net(VB)の新人ですので、まだ学習しています。ありがとう

1

1 答え

技術的には、このような擬似コードのループでこれを行うことができます。

foreach(Control currentControl in this.Controls)
{
   var currentTextbox = currentControl as TextBox;
   if(currentTextbox != null && currentTextbox.Id.EndsWith("_Date"))
     //DO your stuff here
}

しかし、正直なところ、他のコントロールがたくさんある場合は、特にあなたに多くのアイテムを渡すようにしようとしています。あなたが失敗をたくさん持っている場合は、大きなパフォーマンスヒットになる可能性があります。

2
追加された
非常に有効なポイントはcompetent_techです。
追加された 著者 Mitchel Sellers,
@ james - 私はVisual Studioに手を差し伸べてください。私はそれをあなたのために変換します。 (私のVBは錆びています...)
追加された 著者 Mitchel Sellers,
IdがControlのプロパティであるため、キャストしようとする前にIdをテストすることで、パフォーマンスの低下を減らすことができます。また、コンテナコントロール(他のコントロールをホストできるコントロール)を考慮し、各コントロールのControlsコレクションを使用してこのメ​​ソッドを再帰的に実行する必要があります。
追加された 著者 competent_tech,
@ミッチェル売り手 - 私はC#に精通していないと私はコンバータを介して実行しようとしましたが、これはVBに変換する可能性がありますが、それは失敗しますか?ありがとう
追加された 著者 James,
@MitchelSellers - ありがとう、大いに感謝!
追加された 著者 James,