在开发时如果要使用多个图片按钮时,我们经常必须为每个按钮制作一个图片(如:新增,修改,删除 等,其实只是文字不一样而已,我们却必须制作3个图片,一句话麻烦),如果能开发一图片按钮控件, 实现只须更改文字就可以生成按钮,那就好了。以下是实现方式(采用将图片分割成三部分进行实现) /// <summary> /// 图片按钮控件 /// </summary> public class Buttoner : Button { // // 常量 // private const string HTML1 = "<TABLE ID=\""; private const string HTML3 = "\" HEIGHT=\""; private const string HTML4 = "\" BORDER=\"0\" CELLSPACING=\"0\" CELLPADDING=\"0\""; private const string HTML5 = " STYLE=\"cursor:hand\" onclick=\"javascript:"; private const string HTML6 = "\""; private const string HTML7 = ">\n\t<TR>"; private const string HTML8 = "\n\t\t<TD Valign=\"middle\" Align=\"center\" WIDTH=\""; private const string HTML9 = "\" background=\""; private const string HTML10 = "\">"; private const string HTML11 = "</TD>"; private const string HTML12 = "\n\t</TR>\n</TABLE>"; private const string HTML13 = " disabled=\"true\""; private const string HTML14 = " TabIndex=\""; private const string HTML15 = " onkeydown=\"javascript:"; private const string HTML16 = " style=\"padding-top:";
private const string KEY_FORM_SUBMIT_JS = "FormSubmitJs"; // // 变量 // private string leftImagePath; private string middleImagePath; private string rightImagePath;
private Unit length; private Unit height = 20; private Unit width = 6; private Unit topPadWidth = 3;
private string action = null; private string target = null;
private bool defaultButton = false;
/// <summary> /// 构造函数 /// </summary> public Buttoner() { leftImagePath = ApplicationUrl.GetButtonImagePath("btnLeft"); middleImagePath = ApplicationUrl.GetButtonImagePath("btnMiddle"); rightImagePath = ApplicationUrl.GetButtonImagePath("btnRight"); }
/// <summary> /// 左图片路径 /// </summary> public string LeftImagePath { get { return leftImagePath; } set { leftImagePath = value; } }
/// <summary> /// 中间图片路径 /// </summary> public string MiddleImagePath { get { return middleImagePath; } set { middleImagePath = value; } }
/// <summary> /// 右图片路径 /// </summary> public string RightImagePath { get { return rightImagePath; } set { rightImagePath = value; } }
/// <summary> /// 中间图片长度 /// </summary> public Unit Length { get { return length; } set { length = value; } }
/// <summary> /// 图片高度 /// </summary> public override Unit Height { get { return height; } set { height = value; } }
/// <summary> /// 图片宽度 /// </summary> public override Unit Width { get { return width; } set { width = value; } }
/// <summary> /// 图片距顶部宽度 /// </summary> public Unit TopPadWidth { get { return topPadWidth; } set { topPadWidth = value; } }
/// <summary> /// 提交的页面 /// </summary> public string Action { get { return action; } set { action = value; } }
/// <summary> /// Action的目标框架 /// </summary> public string Target { get { return target; } set { target = value; } }
/// <summary> /// 是否默认按钮 /// </summary> public bool DefaultButton { get { return defaultButton; } set { defaultButton = value; } }
protected override void OnPreRender(EventArgs e) { if(this.Visible && !Page.IsClientScriptBlockRegistered(ApplicationKey.FORM_SUBMIT_JS)) { string src = ApplicationUrl.GetJsPath("FormSubmit"); StringBuilder strBuilder = new StringBuilder(); strBuilder.Append("<script language=\"javascript\" src=\""); strBuilder.Append(src); strBuilder.Append("\"></script>");
if(defaultButton) { strBuilder.Append("\n<script language=\"javascript\" id=\"ButtonEnterSubmit\" for=\"document\" event=\"onkeydown\">\n\t"); strBuilder.Append("if(window.event.keyCode == 13)\n\t\t"); strBuilder.Append("{\n\t\t\t"); strBuilder.Append("document.getElementById('"); strBuilder.Append(this.ClientID); strBuilder.Append("').focus();\n\t\t\t");
if(this.Enabled) { if(this.CausesValidation) strBuilder.Append("if(typeof(Page_ClientValidate) != 'function' || Page_ClientValidate()) ");
if(action == null || action == string.Empty) strBuilder.Append(Page.GetPostBackEventReference(this)); else { strBuilder.Append("Submit('"); strBuilder.Append(action); strBuilder.Append("', '"); strBuilder.Append(target); strBuilder.Append("');"); } }
strBuilder.Append("\n\t\t}"); strBuilder.Append("\n</script>"); }
Page.RegisterClientScriptBlock(ApplicationKey.FORM_SUBMIT_JS, strBuilder.ToString()); } }
protected override void Render(HtmlTextWriter writer) { if(this.Visible) { writer.Write(HTML1); writer.Write(this.ClientID); writer.Write(HTML3); writer.Write(height); writer.Write(HTML4); writer.Write(HTML14); writer.Write(this.TabIndex); writer.Write(HTML6);
if(this.Enabled) { // onclick提交 writer.Write(HTML5); writer.Write("{ document.getElementById('"); writer.Write(this.ClientID); writer.Write("').focus(); ");
if(this.CausesValidation) writer.Write("if(typeof(Page_ClientValidate) != 'function' || Page_ClientValidate()) ");
if(action == null || action == string.Empty) writer.Write(Page.GetPostBackEventReference(this)); else { writer.Write("Submit('"); writer.Write(action); writer.Write("', '"); writer.Write(target); writer.Write("');"); }
writer.Write("} "); writer.Write(HTML6); } else writer.Write(HTML13);
writer.Write(HTML7);
writer.Write(HTML8); writer.Write(width); writer.Write(HTML9); writer.Write(leftImagePath); writer.Write(HTML10); writer.Write(" "); writer.Write(HTML11);
writer.Write(HTML8); writer.Write(length); writer.Write(HTML9); writer.Write(middleImagePath); writer.Write(HTML6); writer.Write(HTML16); writer.Write(topPadWidth); writer.Write(HTML10); writer.Write(this.Text); writer.Write(HTML11);
writer.Write(HTML8); writer.Write(width); writer.Write(HTML9); writer.Write(rightImagePath); writer.Write(HTML10); writer.Write(" "); writer.Write(HTML11);
writer.Write(HTML12); } } }
FormSubmit.js
// click提交 function Submit(action, target) { document.forms[0].action = action; if(target != null && target.length != 0) document.forms[0].target = target; document.forms[0].__VIEWSTATE.disabled = true; document.forms[0].submit(); }
// 按Enter键事件 function EnterKeyDown(id) { if(window.event.keyCode == 13 && window.event.srcElement.id == id) return true; else return false; } 
|