2016-12-13 110 views
0

我知道FindControl但我的按鈕是在一個LoginView控件內的Login控件,下面是我的代碼,但它不工作!使登錄按鈕在asp.net默認

Login log = LoginView1.FindControl("Login1") as Login; 
Button logButton = log.FindControl("LoginButton") as Button; 
this.Form.DefaultButton = logButton.UniqueID; 

釷錯誤我得到的是不設置到對象的實例

對象引用。

+0

'FindControl'只着眼於眼前的孩子。你需要遞歸導航所有的孩子,孩子的孩子等,找到你要找的控件。 – ps2goat

+0

我其實在這個網站上有這樣的例子:http://stackoverflow.com/a/19313306/2084315 – ps2goat

+0

你可以發佈aspx標記嗎? – TrevorBrooks

回答

0

FindControl只看直接的孩子。你需要遞歸導航所有的孩子,孩子的孩子等,找到你要找的控件。

public Control MyFindControl(Control parent, string controlIdToFind) 
{ 
    foreach(Control c in parent.Controls) 
    { 
     Control found = MyFindControl(c, controlIdToFind); 
     if (found != null) 
     { 
      return found; 
     } 
    } 

    // control not found. 
    return null; 
} 

然後更改您的代碼:

Button logButton = (Button) MyFindControl(LoginView1, "LoginButton"); 

if (logButton != null) 
{ 
    this.Form.DefaultButton = logButton.UniqueID; 
} 
+0

可能有一些額外的用戶控件的工作,但這是基本的方法 – ps2goat

+0

謝謝這看起來不錯,但這仍然只看LoginView,而不是在LoginView裏的按鈕所在的地方,或者我錯過了一些東西? – zaidasp