Viewstate没有在WebForms中使用Bootstrap multiselect

时间:2015-06-19 17:58:04

标签: jquery asp.net twitter-bootstrap webforms bootstrap-multiselect

我有一个WebForms应用程序,它在Page_Init方法中生成动态控件。其中一个控件是一个HtmlSelect控件,我用项目动态填充。当这在页面上呈现时,我运行使用jQuery代码设置此控件,每个列表项旁边都有一个复选框。

        $("select[id*='team_filter']").multiselect({
          nonSelectedText: 'All',
          numberDisplayed: 1,
          nSelectedText: 'selected',
          allSelectedText: 'All'
        });

然后,用户检查一些项目并发布页面。

在回帖上,在Page_Load事件中,我使用以下代码检查某些项目的Selected属性:

            HtmlSelect ctrl = (HtmlSelect)this.FindControlRecursive("team_filter_1");                
            var firstGame = ctrl.Items.FindByValue("game_1").Selected;
            var secondGame = ctrl.Items.FindByValue("game_2").Selected;

奇怪的是,当用户检查多个选项时,只有第一个选项在Page_Load上返回true,其余的都返回false。看起来所有其他已检查项目的ViewState都不会返回到服务器。

以下是我在Page_Init中的内容,请记住这些是动态控件,因此我必须将它们放在Init中:

                HtmlSelect teamfilter = new HtmlSelect();
                teamfilter.ID = "team_filter_" + studioId;
                teamfilter.Attributes.Add("class", "col-md-9");
                teamfilter.Attributes.Add("multiple", "true");

                ListItem listItem = new ListItem("All " + studioName, "studio_" + studioId);
                listItem.Attributes.Add("data-type", "studio");
                teamfilter.Items.Add(listItem);

                listItem = new ListItem("All Games", "game_0_" + studioId);
                listItem.Attributes.Add("data-type", "game");
                teamfilter.Items.Add(listItem);

1 个答案:

答案 0 :(得分:0)

您可以尝试将HtmlSelect上的Multiple属性设置为true

teamfilter.Multiple = true;