松开面板从回发后面的代码生成

时间:2014-07-24 18:56:33

标签: c# asp.net webforms viewstate page-lifecycle

我正在尝试创建一个动态jquery Tab UI界面,该界面将根据我的数据库值增长。当我发布一个回发时,我松开了我的Panel容器,它打破了我的jquery。我在Page.Init上添加了控件。下面是代码。无论如何我可以A.将控件移回面板? B.阻止我的面板消失。如果我只有容器,我仍然拥有所有的GUTS,我会很高兴。

protected void BindTypes()
{
    string getTypes = String.Format("sp_GetVolumeTypes {0}", _siteID);
    DataTable types = SiteFunctions.dt(getTypes);

    for (int i = 0; i < types.Rows.Count; i++)
    {

        HtmlGenericControl li = new HtmlGenericControl("li");
        li.ID = "title-" + i;
        TabTitle.Controls.AddAt(0, li);


        HtmlGenericControl anchor = new HtmlGenericControl("a");
        anchor.Attributes.Add("href", "#MainContent_" + types.Rows[i][0].ToString());
        anchor.ID = "titleLink-" + i;
        anchor.InnerText = types.Rows[i][0].ToString();


        li.Controls.Add(anchor);

        Panel Place = (Panel)tabs.FindControl(types.Rows[i][0].ToString());

        if (Place == null)
        {
            Place = new Panel();

            Place.ID = types.Rows[i][0].ToString();
            Place.CssClass = "tabs-" + i.ToString();
            tabs.Controls.Add(Place);
            ucViewStateManager.AddControl(Place);
        }
        if (!IsPostBack)
        {

            //Hidden Type
            HiddenField hdnType = new HiddenField();
            Place.Controls.Add(hdnType);
            hdnType.ID = "hdn" + types.Rows[i][0].ToString();
            hdnType.Value = types.Rows[i][0].ToString();

            ucViewStateManager.AddControl(hdnType);

            LoadFixRates(types.Rows[i][0].ToString(), Place);
            AddEmptyFixRateBox(types.Rows[i][0].ToString(), Place);
            AddEmptyFixRateBox(types.Rows[i][0].ToString(), Place);
            AddEmptyFixRateBox(types.Rows[i][0].ToString(), Place);

        }

    }
    BindRackPrice();
}

1 个答案:

答案 0 :(得分:0)

您的问题是您需要在每次回发时重新创建并添加动态控件。适合这种情况的地方是Page_Load事件处理程序。稍后可以添加控件,但不会触发动态控件事件。