0

我的问题比标题说的要复杂一些:

我制作了一个用户控件(我称之为编辑器),用于将数据库数据编辑到我也制作的另一个用户控件中(我称之为 GridView)。

编辑器用于我的gridview中的每一行(一行也是一个用户控件,编辑器仅在行内甚至用于插入)并且可以完美地工作,但当我尝试使用它插入时却无法正常工作。

插入和编辑之间的唯一区别是这个字段:

    #region Field
    /// <summary>
    /// 
    /// </summary>
    //public Field Field { get { return DataItem as Field; } }
    private Field _field;
    [Bindable(true)]
    public Field Field
    {
        get
        {
            if (IsInsert && _field == null)
            {
                _field = SubscriptionController.CreateField();
            }
            return _field;
        }
        set { _field = value; }
    }
    #endregion

在这个 Field 里面,我有我绑定到中继器的集合,该SubscriptionController.CreateField();方法只是创建 Field 类的一个实例,里面的所有集合都是代码:

    public Field CreateField()
    {
        Field field = new Field();
        field.Type = GetFieldTypes().First();
        field.Label = new LocalizedStringCollection();
        field.Values = new FieldValueCollection();
        field.Selections = new FieldSelectionCollection();
        foreach (Models.TrainingGroup trainingGroup in GetTrainingGroup())
        {
            foreach (Models.Division division in GetDivisions())
            {
                foreach (Models.ProfilStatusGroup profilStatusGroup in GetProfilStatusGroup())
                {
                    field.Selections.Add(new Models.FieldSelection() { Selected = false, DivisionId = division.Id, ProfilStatusGroupId = profilStatusGroup.Id, TrainingGroupId = trainingGroup.Id });
                }
            }
        }
    }

我绑定的集合存储在 viewstate 中:

    #region FieldValues
    /// <summary>
    /// Get/Set FieldValues from Viewstate
    /// </summary>
    public FieldValueCollection FieldValues
    {
        get
        {
            if (ViewState["FieldValues"] == null)
            {
                if (Field != null && Field.Values != null)
                    ViewState.Add("FieldValues", Field.Values);
                else
                    ViewState.Add("FieldValues", new FieldValueCollection());
            }
            if (ViewState["FieldValues"] != null)
            {
                return (FieldValueCollection)ViewState["FieldValues"];
            }
            return null;
        }
        set
        {
            if (ViewState["FieldValues"] == null)
            {
                ViewState.Add("FieldValues", value);
            }
            else
            {
                ViewState["FieldValues"] = value;
            }

        }
    }
    #endregion

但是当我进行回发时,转发器中的所有文本框都是空的。

4

0 回答 0