【问题标题】:programmatically adding buttons and OnClientClick but still having post back issue以编程方式添加按钮和 OnClientClick 但仍有回发问题
【发布时间】:2012-12-04 05:48:28
【问题描述】:

我正在尝试使用 Javascript 隐藏一些 div,但我认为回帖会不断重新加载页面。 为了让事情变得更复杂,我的按钮是由我的代码以编程方式添加的。

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..

提前感谢您的任何建议。

【问题讨论】:

  • 您检查过浏览器的控制台吗? Javascript 中可能存在错误,这会阻止 return false 执行,因此实际上并没有按照您的意愿行事。您可以在 Javascript 函数中的某处放置 alert 以查看它是否实际被调用?
  • 你的 OnClientClick 应该设置为 "return hide_div('" + newButton.ClientID + "')";

标签: c# javascript asp.net postback onclientclick


【解决方案1】:

您尚未显示您在哪个事件中添加控件。但是我从您的问题中假设您在 Page_Load 中执行此操作。如果是,请尝试进入 OnInit 事件。

其次,在Page_Load中需要勾选

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

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-20
    • 2013-08-13
    • 1970-01-01
    • 2020-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多