2015-04-07 14 views
6

"Giriş 1", "Giriş 2" ve "Giriş 3" kimliklerine sahip olduğumu varsayalım.Öğe (Sunucu Tarafı) dinamik olarak başvuruda bulunabilir mi?

jquery
Input1.Value = 1; 
Input2.Value = 1; 
Input3.Value = 1; 

sadece i yoluyla ('# Girişi' + i) ve döngü $ gibi bir öğe refrence edebilir, benzer bir şey:

ziyade sahip yazmak için içlerinden döngü için bir yol var mı arkasındaki ASP kodunda çok yararlı olur.

+2

muhtemelen [ 'Control.FindControl' yöntemini] kullanmak gerekir (https://msdn.microsoft.com/en-us/library/486wc64h (v = vs.110) .aspx) – GolfWolf

+0

bu kadar web formları hakkında – adricadar

cevap

2

Düzenleme: Yaa, tüm bulmak için tekrar aradı sayfadaki denetimleri "x" ve aşağıdaki kaynak kodu ile geldi: ... olan örnek adlandırma düzeni sen dayalı

foreach(Control c in Page.Controls) 
{ 
    if (c is TextBox) 
    { 
     // Do whatever you want to do with your textbox. 
    } 
} 

Tür aşağıdaki gibi bir şey yapabilirsiniz:

private void Button1_Click(object sender, EventArgs MyEventArgs) 
    { 
      string controlName = TextBox 

      for(int i=1;i<4;i++) 
      { 
      // Find control on page. 
      Control myControl1 = FindControl(controlName+i); 
      if(myControl1!=null) 
      { 
       // Get control's parent. 
       Control myControl2 = myControl1.Parent; 
       Response.Write("Parent of the text box is : " + myControl2.ID); 
      } 
      else 
      { 
      Response.Write("Control not found"); 
      } 
     } 

    } 

Bu, sayısal olarak adlandırılmış denetimler arasında döngü sağlayacak ama aksi takdirde biraz aksak.

+0

Bunu denedim, ancak Denetim nesnesinin değeri yok. Kodu nasıl atabilirim veya bu kontrolün * bir giriş tipi olması gerektiğini ve bu nedenle bir Değer tanımına sahip olduğunu söyler misiniz? – colobusgem

+0

giriş türünüze bağlı olarak * siz * böyle bir şeye sahip olmalısınız: ((TextBox) myControl1) .Value – Pseudonym

1

Üst kapsayıcıyı biliyorsanız, .Controls() özelliği ile döngü yapabilirsiniz. Sayfa düzeyinde başlar ve yinelemeli olarak çalışırsanız, sonuçta sayfada tüm denetimlere ulaşabilirsiniz.

Daha fazla bilgi için this numaralı sorudan yanıta bakın.

0

Her şey yazılanları iyi yazmayı severim, böylece bunları bir listede saklarım. Bu, kodu refactoring için daha dirençli yapar ve yayınlamaya gerek yoktur. Tüm kontrollerinizi listeye koymak biraz daha fazla ön plana çıkıyor, ama benim için çoğu zaman buna değer.

Denetimlerinizin ne tür olduğundan emin değilim, bu yüzden onlar Input türündeymiş gibi davranacağım.

var InputControls = new List<Input>(){Input1, Input2, Input3}; 
foreach(var input in InputControls) 
{ 
    input.Value = 1; 
} 
İlgili konular