Добавление кнопок и OnClientClick программным способом, но проблема с постбэком

Я пытаюсь скрыть некоторые div, используя Javascript, но я думаю, что пост продолжает перезагружать страницу. Чтобы сделать вещи более сложными, мои кнопки добавляются программно моим кодом.

foreach (string line in thefilters)
        {
            Button newButton = new Button();
            newButton.ID = Convert.ToString(line);
            newButton.Text = Convert.ToString(line);
            newButton.CssClass = "tblbutton";
            //newButton.Attributes.Add("onclick", "hide_div("+newButton.ID+")");
            newButton.OnClientClick = "return hide_div('" + newButton.ID + "')";
            pnl_left.Controls.Add(newButton);
        }

Мой javascript находится в шапке следующим образом.

<script type="text/javascript">
        function hide_div(filter) {
            var pnl_right = document.getElementById("pnl_right");
            var listofelements = pnl_right.getElementsById("div");
            for (var i = 0; i < listofelements.length; i++) {
                if (listofelements[i].id.indexOf(filter) == 0) {

                    document.getElementById(listofelements[i].id).style.display = 'inline';
                }
                else {
                    document.getElementById(listofelements[i].id).style.display = 'none';
                }
            }
            return false;

        }

У меня могут быть проблемы в javascript, связанные с тем, чего я хочу достичь, но я уверен, что, если я смогу остановить обратную передачу, я сам смогу решить javascript..

Спасибо за любые предложения заранее.

1 ответ

Вы не показали, в какое событие вы добавляете элементы управления. Но я полагаю из вашей проблемы, что вы делаете это в Page_Load. Если да, попробуйте перейти в событие OnInit.

Во-вторых, в Page_Load вам нужно проверить

if(!IsPostBack)
{
//your code for adding controls
}

Надеюсь, это поможет.

Другие вопросы по тегам