Asp.net設定預設按鈕的方法總結
第1種方法:
就是在Asp.net的頁面中找到
設定form的屬性 defaultbutton=“預設按鈕ID”
這個是我在VS2005中式的,不知道2003中是嗎
第2種方法:
http://www.cnblogs.com/netufo/archive/2004/12/21/79841.html
就是在Asp.net的頁面中找到
設定form的屬性 defaultbutton=“預設按鈕ID”
這個是我在VS2005中式的,不知道2003中是嗎
第2種方法:
http://www.cnblogs.com/netufo/archive/2004/12/21/79841.html
ASP.NET 中由於一個頁面只有 Form. ,經常碰到的一個問題是當在一個文字框中按回車後確不知哪個按鈕被當成提交按鈕提交了,非常鬱悶!!!特別是在有使用者控制元件時,搞得都不敢用 Validator 。
今天實在任不住把它搞定,其實也不麻煩。
基本思路:
自己寫一個控制元件繼承 TextBox,增加一個 SubmitControl 屬性用來指定此文字框上按回車時由哪個按鈕來響應。
再做一個 Converter 增加設計時支援,就是在設計時可以用下拉框選擇提交按鈕。
目前只考慮了 Button、LinkButton和ImageButton作為提交按鈕,當然繼承它們的控制元件也可以。
程式碼很少,就直接貼在這兒了。
ufoTextBox 控制元件:
自定義的 Converter,用於設計時支援:
沒幾行程式碼,自己看吧。
第3種方法:
http://www.cnblogs.com/squirrel_sc/archive/2004/11/22/67206.html
由於asp.net裡面的button都是submit型別的,所以在表單內按回車都是觸發的第一個按鈕的click事件,如果有多個button則無法在回車的時候觸發後面的按鈕事件。以下方案可通過設定來改變頁面的預設按鈕。
1.在基頁面內的load事件里加入supportDefaultButton()
2.基頁面中宣告變數:
Protected DefaultButton As Button
3.在基頁面中加入函式supportDefaultButton並過載RaisePostBackEvent
4.DefaultButton.js檔案內容:
在繼承頁面的load事件裡:
5.DefaultButton = 需要設定為預設按鈕的物件名稱
即可。
今天實在任不住把它搞定,其實也不麻煩。
基本思路:
自己寫一個控制元件繼承 TextBox,增加一個 SubmitControl 屬性用來指定此文字框上按回車時由哪個按鈕來響應。
再做一個 Converter 增加設計時支援,就是在設計時可以用下拉框選擇提交按鈕。
目前只考慮了 Button、LinkButton和ImageButton作為提交按鈕,當然繼承它們的控制元件也可以。
程式碼很少,就直接貼在這兒了。
ufoTextBox 控制元件:
public class ufoTextBox : TextBox
{
[TypeConverter(typeof(SubmitableControlConvertor)), DefaultValue(""),Category("Behavior")]
public string SubmitControl
{
get
{
object ret = this.ViewState["SubmitControl"];
if (ret != null)
{
return (string) ret;
}
return string.Empty;
}
set
{
this.ViewState["SubmitControl"] = value;
}
}
protected override void AddAttributesToRender(HtmlTextWriter writer)
{
base.AddAttributesToRender(writer);
if(this.SubmitControl.Length > 0)
{
Control con = FindControl(SubmitControl);
if(con != null)
{
string script = "if(event.keyCode == 13){document.getElementById('" + con.ClientID + "').click();event.returnValue=false;}";
writer.AddAttribute("onkeydown",script);
}
}
}
}
{
[TypeConverter(typeof(SubmitableControlConvertor)), DefaultValue(""),Category("Behavior")]
public string SubmitControl
{
get
{
object ret = this.ViewState["SubmitControl"];
if (ret != null)
{
return (string) ret;
}
return string.Empty;
}
set
{
this.ViewState["SubmitControl"] = value;
}
}
protected override void AddAttributesToRender(HtmlTextWriter writer)
{
base.AddAttributesToRender(writer);
if(this.SubmitControl.Length > 0)
{
Control con = FindControl(SubmitControl);
if(con != null)
{
string script = "if(event.keyCode == 13){document.getElementById('" + con.ClientID + "').click();event.returnValue=false;}";
writer.AddAttribute("onkeydown",script);
}
}
}
}
自定義的 Converter,用於設計時支援:
public class SubmitableControlConvertor : StringConverter
{
private object[] GetControls(IContainer container)
{
ComponentCollection components = container.Components;
ArrayList ret = new ArrayList();
foreach (IComponent control in components)
{
if (!(control is Button || control is LinkButton || control is ImageButton))
{
continue;
}
Control button = (Control) control;
if ((button.ID != null) && (button.ID.Length != 0))
{
ret.Add(string.Copy(button.ID));
}
}
ret.Sort(Comparer.Default);
return ret.ToArray();
}
public override System.ComponentModel.TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
{
if ((context != null) && (context.Container != null))
{
object[] controls = this.GetControls(context.Container);
if (controls != null)
{
return new TypeConverter.StandardValuesCollection(controls);
}
}
return null;
}
public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)
{
return false;
}
public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
{
return true;
}
}
{
private object[] GetControls(IContainer container)
{
ComponentCollection components = container.Components;
ArrayList ret = new ArrayList();
foreach (IComponent control in components)
{
if (!(control is Button || control is LinkButton || control is ImageButton))
{
continue;
}
Control button = (Control) control;
if ((button.ID != null) && (button.ID.Length != 0))
{
ret.Add(string.Copy(button.ID));
}
}
ret.Sort(Comparer.Default);
return ret.ToArray();
}
public override System.ComponentModel.TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
{
if ((context != null) && (context.Container != null))
{
object[] controls = this.GetControls(context.Container);
if (controls != null)
{
return new TypeConverter.StandardValuesCollection(controls);
}
}
return null;
}
public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)
{
return false;
}
public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
{
return true;
}
}
沒幾行程式碼,自己看吧。
第3種方法:
http://www.cnblogs.com/squirrel_sc/archive/2004/11/22/67206.html
由於asp.net裡面的button都是submit型別的,所以在表單內按回車都是觸發的第一個按鈕的click事件,如果有多個button則無法在回車的時候觸發後面的按鈕事件。以下方案可通過設定來改變頁面的預設按鈕。
1.在基頁面內的load事件里加入supportDefaultButton()
2.基頁面中宣告變數:
Protected DefaultButton As Button
3.在基頁面中加入函式supportDefaultButton並過載RaisePostBackEvent
Private Sub supportDefaultButton()Sub supportDefaultButton()
GetPostBackEventReference(New System.Web.UI.Control)
RegisterStartupScript("DefaultButton", "")
End Sub
Protected Overloads Overrides Sub RaisePostBackEvent()Sub RaisePostBackEvent(ByVal sourceControl As System.Web.UI.IPostBackEventHandler, ByVal eventArgument As String)
If (DefaultButton Is Nothing OrElse Request("__EVENTTARGET") <> "") Then
MyBase.RaisePostBackEvent(sourceControl, eventArgument)
ElseIf (Not DefaultButton Is Nothing) Then
MyBase.RaisePostBackEvent(DirectCast(DefaultButton, System.Web.UI.IPostBackEventHandler), Nothing)
End If
End Sub
GetPostBackEventReference(New System.Web.UI.Control)
RegisterStartupScript("DefaultButton", "")
End Sub
Protected Overloads Overrides Sub RaisePostBackEvent()Sub RaisePostBackEvent(ByVal sourceControl As System.Web.UI.IPostBackEventHandler, ByVal eventArgument As String)
If (DefaultButton Is Nothing OrElse Request("__EVENTTARGET") <> "") Then
MyBase.RaisePostBackEvent(sourceControl, eventArgument)
ElseIf (Not DefaultButton Is Nothing) Then
MyBase.RaisePostBackEvent(DirectCast(DefaultButton, System.Web.UI.IPostBackEventHandler), Nothing)
End If
End Sub
4.DefaultButton.js檔案內容:
for(i=0;i<Form1.elements.length;i++)
{
if(Form1.elements[i].type == "submit")
{
fstsubmit = Form1.elements[i]
fstsubmit.attachEvent("onmouseup", changeEvent)
//break; 這一句應該去掉
}
}
function changeEvent()
{
__doPostBack(event.srcElement.id, '')
}
{
if(Form1.elements[i].type == "submit")
{
fstsubmit = Form1.elements[i]
fstsubmit.attachEvent("onmouseup", changeEvent)
//break; 這一句應該去掉
}
}
function changeEvent()
{
__doPostBack(event.srcElement.id, '')
}
在繼承頁面的load事件裡:
5.DefaultButton = 需要設定為預設按鈕的物件名稱
即可。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-442005/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 設定radio單選按鈕預設選中
- 設定按鈕的徽章文字
- 菜鳥學JS(四)——javascript為按鈕註冊回車事件(設定預設按鈕)JSJavaScript事件
- html如何設定radio單選按鈕預設選中效果HTML
- WPF Button按鈕設定圓角
- MFC設定按下Enter鍵後響應指定的按鈕
- UIButton(用按鈕中的文字大小來動態設定按鈕的尺寸)UI
- 前端設計,確定按鈕正慢慢消失前端
- Swift 設定navigation左右兩側按鈕SwiftNavigation
- conda 源設定方法總結
- win10顯示休眠按鈕設定方法 win10電源怎麼顯示休眠按鈕Win10
- Androidx為Fragment中的按鈕設定監聽AndroidFragment
- Qt中按鈕背景圖片的切換設定QT
- Qt5.9中QSS(qt Style Sheet)用法之一設定按鈕顏色和背景色(設定按鈕間相互間隔、設定按鈕與周圍邊緣間隔)QT
- css設定按鈕心跳收縮後,按鈕文字上下抖動,如何解決?CSS
- jQuery實現動態設定按鈕是否可用jQuery
- 設定按鈕不可用,避免重複提交
- win10開始選單電源按鈕增加休眠設定方法Win10
- 設定按鈕失效的幾種方式簡單介紹
- 如何修改移動裝置按鈕預設樣式
- 日常總結 --- 視訊播放按鈕
- NX二次開發:一個DLL設定多個按鈕操作的方法
- vscode 設定按鈕 戴上了聖誕帽!VSCode
- 點選大中小按鈕設定文章字型大小
- (五)自定義按鈕模板和設定觸發器觸發器
- win10預設程式怎麼設定介面_win10設定預設程式的方法Win10
- Win7在桌面上設定一鍵鎖定按鈕Win7
- 乾貨!必看創意按鈕設計,打造真正的按鈕誘惑
- InstaMaterial概念設計(3):feed卡片上的按鈕、評論按鈕
- idea設定 執行 按鈕在右上角,設定toolbar兩端對齊Idea
- vue-button設定按鈕是否可點選狀態Vue
- Qt中使用setStyleSheet對按鈕進行外觀設定QT
- QComboBox 右側下拉按鈕qss樣式設定
- 選單許可權和按鈕許可權設定
- win10設定預設軟體的方法_win10預設軟體怎麼設定Win10
- 設定Gridview,Repter...中的linkbutton按鈕不可用View
- iOS 11開發教程(二十)iOS11應用檢視美化按鈕之設定按鈕的狀態iOS
- iOS 11開發教程(十九)iOS11應用檢視美化按鈕之設定按鈕的外觀iOS