0

aspx ページからラベル コントロールを見つけようとしています。

Label labelmessageupdate;
          labelmessageupdate = (System.Web.UI.WebControls.Label )FindControl("updateMessage1");

私が設定した場合labelmessageupdate.Text ="something"

オブジェクト参照例外を返します。

ラベル コントロールが更新パネル内にあることが問題である可能性があります。

4

3 に答える 3

0

指定したラベルコントロールが見つからないと思います

if(FindControl("updateMessage1") is Label)
{
    labelmessageupdate = FindControl("updateMessage1") as Label;
    labelmessageupdate.Text="This shoould work if available";
}
于 2011-02-16T11:47:37.677 に答える
0

nullをチェックするだけです。オブジェクト参照エラーが表示されないように、常に null 条件を確認してください。

if (labelmessageupdate != null)
{
     labelmessageupdate.Text ="something"
}
于 2011-02-16T11:43:45.030 に答える
0

これを試してみると、見つけようとしているコントロールが別のユーザー コントロールにある可能性があります。

使用するには

Label updateMessage = FindChildControl<Label>(base.Page, "updateMessage1");
if (updateMessage!=null) 
{
   updateMessage.Text = "new text";
}

/// <summary>     
/// Similar to Control.FindControl, but recurses through child controls.
/// Assumes that startingControl is NOT the control you are searching for.
/// </summary>
public static T FindChildControl<T>(Control startingControl, string id) where T : Control
{
    T found = null;

    foreach (Control activeControl in startingControl.Controls)
    {
        found = activeControl as T;

        if (found == null || (string.Compare(id, found.ID, true) != 0))
        {
            found = FindChildControl<T>(activeControl, id);
        }

        if (found != null)
        {
            break;
        }
    }

    return found;
} 
于 2011-02-16T12:07:28.577 に答える