Feature
WebBasePanel
原先的設計中,WebBasePanel 並不會保存使用者移動後的位置及展開與否等設定,
雖然這是既定的設計,不算是Bug,但使用起來就有點彆扭,所以我抽了點時間修改
這個控件,以下是變動的程式碼,在下載了新的pasp_aspnet_panel.js後,WebPanel
及WebTemplatePanel就擁有保存使用者移動的位置及展開等設定.
pasp_aspnet_panel.js
http://www.dreams.idv.tw/~code6421/Doc/pasp_aspnet_panel.js
WebBasePanel.cs
protected override void AddAttributesToRender(HtmlTextWriter writer)
{
if(Page != null)
Page.VerifyRenderingInServerForm(this);
writer.AddAttribute(HtmlTextWriterAttribute.Type,"hidden");
writer.AddAttribute(HtmlTextWriterAttribute.Name,this.ClientID+"_X");
if(Page.Request.Params[this.ClientID+"_X"] != null)
writer.AddAttribute("value",Page.Request.Params[this.ClientID+"_X"]);
writer.RenderBeginTag(HtmlTextWriterTag.Input);
writer.RenderEndTag();
writer.AddAttribute(HtmlTextWriterAttribute.Name,this.ClientID+"_Y");
writer.AddAttribute(HtmlTextWriterAttribute.Type,"hidden");
if(Page.Request.Params[this.ClientID+"_Y"] != null)
writer.AddAttribute("value",Page.Request.Params[this.ClientID+"_Y"]);
writer.RenderBeginTag(HtmlTextWriterTag.Input);
writer.RenderEndTag();
writer.AddAttribute(HtmlTextWriterAttribute.Name,this.ClientID+"_DISPLAY");
writer.AddAttribute(HtmlTextWriterAttribute.Type,"hidden");
if(Page.Request.Params[this.ClientID+"_DISPLAY"] != null)
writer.AddAttribute("value",Page.Request.Params[this.ClientID+"_DISPLAY"]);
writer.RenderBeginTag(HtmlTextWriterTag.Input);
writer.RenderEndTag();
_defaultHeight = Height.ToString();
if(Site == null)
Height = Unit.Empty;
base.AddAttributesToRender (writer);
writer.AddStyleAttribute("FILTER","alpha(opacity:100)");
}
public override void RenderBeginTag(HtmlTextWriter writer)
{
string header = CreateHeader();
base.RenderBeginTag (writer);
writer.WriteLine(
string.Format(BASE_BEGIN_HTML,
this.ClientID,
header,
_defaultHeight,
ColorTranslator.ToHtml(HeaderBackgroundColor),
ColorTranslator.ToHtml(BorderColor),
BorderWidth.ToString(),
Enum.GetName(typeof(BorderStyle),BorderStyle),
ColorTranslator.ToHtml(BackColor),
this.ClientID+"_span",
this.ClientID+"_arrow"
)
);
writer.WriteLine(
"<SCRIPT language='JavaScript'>var {0}_obj = new WebPanelObject(document.getElementById('{0}'),document.getElementById('{0}_X'),document.getElementById('{0}_Y'),document.getElementById('{0}_DISPLAY'),document.getElementById('{0}_arrow'),document.getElementById('{0}_span'));</script>",this.ClientID);
}
要多看勘誤表哦