MS-Sharepoint 2007: пользовательский элемент управления полем, TemplateContainer.FindControl всегда возвращает NULL - PullRequest
0 голосов
/ 09 июня 2010

У меня SharePoint 2007 на Windows Server 2003 с пакетом обновления 1 (в ВМ).Я запускаю веб-приложение здесь: http://vspug.com/nicksevens/2007/08/31/create-custom-field-types-for-sharepoint/

Часть этого ниже:

using System;
using System.Collections.Generic;
using System.Text;
using System.Web.UI.WebControls;

using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;

namespace CustomControl
{
    public class customfieldcontrol : BaseFieldControl
    {
        protected TextBox txtFirstName;
        protected TextBox txtLastName;

        protected override string DefaultTemplateName
        {
            get { return "CustomFieldRendering"; }
        }

        public override object Value
        {
            get
            {
                EnsureChildControls();
                return txtFirstName.Text + "%" + txtLastName.Text;
            }

            set
            {
                try
                {
                    EnsureChildControls();
                    txtFirstName.Text = value.ToString().Split('%')[0];
                    txtLastName.Text = value.ToString().Split('%')[1];
                }
                catch { }
            }
        }

        public override void Focus()
        {
            EnsureChildControls();
            txtFirstName.Focus();
        }

        protected override void CreateChildControls()
        {
            if (Field == null) return;
            base.CreateChildControls();

            //Don't render the textbox if we are  just displaying the field
            if (ControlMode == Microsoft.SharePoint.WebControls.SPControlMode.Display) return;

            txtFirstName = (TextBox)TemplateContainer.FindControl("txtFirstName");
            txtLastName = (TextBox)TemplateContainer.FindControl("txtLastName");

            if (txtFirstName == null) throw new NullReferenceException("txtFirstName is null");
            if (txtLastName == null) throw new NullReferenceException("txtLastName is null");

            if (ControlMode == Microsoft.SharePoint.WebControls.SPControlMode.New)
            {
                txtFirstName.Text = "";
                txtLastName.Text = "";
            }
        }
    }
}

Эта строка:

txtFirstName = (TextBox)TemplateContainer.FindControl("txtFirstName");

всегда возвращает ноль.

Я удалил base.CreateChildControls(), но он по-прежнему возвращает ноль.

Любая помощь будет принята с благодарностью.

1 Ответ

2 голосов
/ 17 марта 2011

Поместите файл .ascx вашего элемента управления прямо в папку CONTROLTEMPLATES и попробуйте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...