Asp.Net Repeater在回发时丢失数据

时间:2012-06-29 09:03:23

标签: asp.net postback repeater

我的问题比标题说的要复杂得多:

我创建了一个用户控件(我称之为编辑器),用于将数据库数据编辑到我也做过的另一个用户控件中(我称之为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

在这个领域里面我收集了我与转发器绑定的集合 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

但是当我收到回发后,我的转发器中的所有文本框都是空的。

0 个答案:

没有答案