有一個問題,我似乎無法環繞我的頭(我對ASP.NET環境很陌生),但我相信你對此有一些輸入。防止頁面刷新按鈕點擊
我想要完成的是一個由按鈕組成的數字小鍵盤,當點擊按鈕時,它會根據按下的按鈕填充一個文本框。 到目前爲止,一切都很好,TextBox獲取它的值,並在點擊「submit」按鈕時發佈結果。
我遇到的問題是,服務器回發需要3-5秒才能完成每次點擊按鈕,由於舊的客戶端硬件和網絡差,所以這導致我的問題: 是否有可能在所有填充文本框沒有回發,只有在使用服務器端按鈕和文本框時單擊「提交」時才發佈? 它可能是用AJAX/JQuery(不熟悉這些技術的att都可以)完成的,如果有的話,有關如何提示?
我想讓NumPad的按鈕在沒有頁面加載的情況下填充文本框,並在點擊提交按鈕時將結果發佈到服務器。
我試過在這裏搜索SO和谷歌,並發現了很多有趣的想法,並學到了很多東西。但我沒有嘗試過已經工作到目前爲止......
如果有人對我如何思考(或重新考慮)這個問題有任何指示,我很樂意接受他們!
的代碼,我現在所擁有的:
ASPX代碼:
<div id="NumpadDiv" runat="server">
<div id="box" runat="server"></div>
<div id="order" runat="server"></div>
<div id="row1" class="row" runat="server"></div>
<div id="row2" class="row" runat="server"></div>
<div id="row3" class="row" runat="server"></div>
<div id="row4" class="row" runat="server"></div>
</div>
後面的代碼:
private void RenderNumpad()
{
box.Controls.Add(_quantity);
_quantity.Text = "";
Button numOrderButton = new Button { Text = "Order", ID = "numOrderBtn", CssClass = "orderButton" };
numOrderButton.Click += NumOrder_Click;
order.Controls.Add(numOrderButton);
Button numBackButton = new Button {Text = "<", ID = "numBackBtn", CssClass = "numButton"};
numBackButton.Click += NumBack_Click;
Button numClearButton = new Button {Text = "C", ID = "numClearBtn", CssClass = "numButton"};
numClearButton.Click += NumClear_Click;
for (int i = 0; i < 10; i++)
{
Button numpadButton = new Button {Text = i.ToString(), ID = i.ToString(), CssClass = "numButton"};
numpadButton.Click += Numpad_Click;
switch ((i + 2)/3)
{
case 0:
row4.Controls.Add(numpadButton);
break;
case 1:
row3.Controls.Add(numpadButton);
break;
case 2:
row2.Controls.Add(numpadButton);
break;
case 3:
row1.Controls.Add(numpadButton);
break;
}
}
row4.Controls.AddAt(0, numBackButton);
row4.Controls.Add(numClearButton);
}
private void Numpad_Click(object sender, EventArgs e)
{
var btn = sender as Button;
if (btn != null)
_quantity.Text += btn.Text;
}
private void NumClear_Click(object sender, EventArgs e)
{
_quantity.Text = "";
}
private void NumBack_Click(object sender, EventArgs e)
{
if (_quantity.Text.Length > 0)
_quantity.Text = _quantity.Text.Remove(_quantity.Text.Length - 1, 1);
}
private void NumOrder_Click(object sender, EventArgs e)
{
// Use value from TextBox
}
地方外更新面板內的所有代碼,然後單擊按鈕的代碼應該放在外更新面板內部,它的Click事件放置在更新面板觸發變量 –
@NazirUllah感謝您的輸入。發佈的代碼不是正確的,我現在編輯並刪除了UpdatePanels,因爲它們不是必需的。 – Falchion