假設我有ID爲「Input1」,「Input2」和「Input3」的元素。我們可以動態引用元素(服務器端)
是否有通過他們的方式循環而不是有寫:
Input1.Value = 1;
Input2.Value = 1;
Input3.Value = 1;
在jQuery中你可以通過我refrence如$一個元素(「#輸入」 + i)和環路,類似的東西在後面的ASP代碼中會非常有用。
假設我有ID爲「Input1」,「Input2」和「Input3」的元素。我們可以動態引用元素(服務器端)
是否有通過他們的方式循環而不是有寫:
Input1.Value = 1;
Input2.Value = 1;
Input3.Value = 1;
在jQuery中你可以通過我refrence如$一個元素(「#輸入」 + i)和環路,類似的東西在後面的ASP代碼中會非常有用。
編輯:咄,我再次搜索查找所有的「X」控制頁面上,並與下面的源代碼上來:
foreach(Control c in Page.Controls)
{
if (c is TextBox)
{
// Do whatever you want to do with your textbox.
}
}
的......根據你的榜樣命名方案有種你可以做類似如下的事情:
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");
}
}
}
這將讓你通過數字命名的控制循環,但否則它有點笨重。
好吧,我試過,但控制對象沒有價值。我如何投它或告訴代碼,這個控件*應該*是一個輸入類型,因此有一個值定義? – colobusgem
根據您的輸入類型,您*可能*必須將其轉換爲:((TextBox)myControl1).Value – Pseudonym
如果您知道父容器,則可以通過其.Controls()屬性進行循環。如果從頁面級開始並遞歸工作,則最終可以訪問頁面上的所有控件。
請參閱this問題的答案瞭解更多詳情。
我喜歡讓東西保持強類型,所以我將它們存儲在一個列表中。這使代碼對重構更有彈性,並且不需要投射。將所有控件放入列表需要稍微多一點的前期工作,但對我來說,這往往是值得的。
我不確定你的控件是什麼類型的,所以我會假裝它們的類型爲Input
。
var InputControls = new List<Input>(){Input1, Input2, Input3};
foreach(var input in InputControls)
{
input.Value = 1;
}
你可能需要使用['Control.FindControl'方法(https://msdn.microsoft.com/en-us/library/486wc64h(V = vs.110)的.aspx) – GolfWolf
它關於webforms? – adricadar