【问题标题】:Why does my no-submit (HtmlButton) still submit?为什么我的不提交(HtmlButton)仍然提交?
【发布时间】:2015-06-19 21:59:10
【问题描述】:

我想动态地使一直存在但起初隐藏的行变得可见。

我尝试过客户端 (jQuery) 路由,但遇到了问题。

我更喜欢走服务器端 (C#) 的道路,我想我已经找到了基于 this thread 和这段代码的方法:

HtmlButton btnAddFoapalRow = null;
. . .       
btnAddFoapalRow = new HtmlButton();
btnAddFoapalRow.Attributes["type"] = "button";
btnAddFoapalRow.InnerHtml = "+"; 
btnAddFoapalRow.ID = "btnAddFoapalRow";
btnAddFoapalRow.ServerClick += new EventHandler(btnAddFoapalRow_Click);
this.Controls.Add(btnAddFoapalRow);

private void btnAddFoapalRow_Click(object sender, EventArgs e)
{
    try
    {
        ShowNextFoapalRow();
    }
    catch (Exception ex)
    {
        String s = String.Format("Exception occurred: {0}", ex.Message); // TODO: Log this somewhere
    }
}

//// This only works the first time, because it causes the page to be reloaded, setting foapalRowsShowing back to 2
private void ShowNextFoapalRow()
{
    switch (foapalRowsShowing)
    {
        case 2:
            foapalrow3.Visible = true;
            foapalRowsShowing = 3;
            break;
        case 3:
            foapalrow4.Visible = true;
            foapalRowsShowing = 4;
            btnAddFoapalRow.Disabled = true;
            break;
    }
}


foapalrow3 = new HtmlTableRow();
foapalrow3.ID = "foapalrow3";
foapalrow3.Visible = false;
. . .
foapalrow3 = new HtmlTableRow();
foapalrow3.ID = "foapalrow3";
foapalrow3.Visible = false;

...但是不行 - 第一次使第二行可见,但随后的“+”HtmlButton 混搭不会使第三行可见。并单步执行代码,我明白了原因:每次我混合按钮时都会提交页面 ,因此初始代码再次运行,将可见的行数设置回两,并且总是使第 3 行可见(第 4 行从不可见)。

这是捣碎按钮后的样子,无论我捣碎按钮多少次(应该再添加一行,但它永远不会):

第 1 行,顺便说一句,是列标题行;第 2 行是默认可见的单行; row3 和 row4 存在,但起初不可见。

【问题讨论】:

    标签: javascript c# jquery sharepoint-2010 htmlbutton


    【解决方案1】:

    尝试使用 btnAddFoapalRow.Attributes.Add("onclick", "return false;");

    【讨论】:

    • 试试这个。 OnServerClick="return false;"
    • 其实很抱歉,我才意识到。您无法阻止回发,因为您正在调用服务器脚本。它正在接收来自服务器的响应。您最好的选择是在使用 onclick 事件之前执行我提到的操作并改用客户端。确保删除 btnAddFoapalRow.ServerClick
    • 只是想指出另一种选择是使用视图状态。所以你可以在服务器端存储变量。第一个链接显示如何保存,第二个链接显示如何加载。 msdn.microsoft.com/en-us/library/ms227551(v=vs.85).aspxmsdn.microsoft.com/en-us/library/ms228048(v=vs.85).aspx
    • 好的。试试 OnClientClick="return false;"让我知道这是怎么回事。
    • 你需要进入你的windows窗体的aspx页面。 msdn.microsoft.com/en-us/library/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    • 1970-01-01
    • 2019-06-20
    相关资源
    最近更新 更多