.net vb自定义控件求救
重写Render如下:
Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
CreateChildControls()
MyBase.Render(writer)
writer.Write("<script type=""text/javascript"">" _
& "function PreView(FileName){" _
& "var ext=FileName.substring(FileName.lastIndexOf("".""),FileName.length);" _
& "ext=ext.toLowerCase();" _
& "if((ext!='.jpg')&&(ext!='.gif')&&(ext!='.jpeg')&&(ext!='.png')&&(ext!='.bmp')){" _
& "alert(""你选择的不是有效的图片文件!"");}else{" _
& "document.getElementById(""PreView"").innerHTML=""<img src='""+FileName+""' style='width:100px;height:100px; border:0px;' alt=''/>"";}" _
& "}" _
& "</script>")
End Sub
重写CreateChildControls如下:
Private Sub BuildControl()
Dim HIF As New HtmlInputFile
Dim HIB As New HtmlInputButton
HIF.ID = UniqueID & "_UpFile"
HIF.Name = UniqueID & "_UpFile"
HIF.Style.Add(HtmlTextWriterStyle.Display, "none")
HIF.Attributes.Add("onchange", "PreView(this.value)")
HIB.ID = UniqueID & "_Btn"
HIB.Name = UniqueID & "_Btn"
HIB.Value = "上传图片"
HIB.Attributes.Add("OnClick", HIF.ID & ".click()")
Controls.Add(New LiteralControl("<div style=""height:120px; border:1px solid red; float:left; display:block; margin:0 5px 0 0;"">" _
& vbCrLf & "<ul style=""float:left; padding:0px; margin:0px; list-style-type:none; width:100px;"">" _
& vbCrLf & "<li id=""PreView"" style=""height:100px;""></li>" _
& vbCrLf & "<li style=""height:20px; text-align:center;"">"))
Controls.Add(HIF)
Controls.Add(HIB)
Controls.Add(New LiteralControl(vbCrLf & "</li>" _
& vbCrLf & "</ul></div>"))
End Sub
Protected Overrides Sub CreateChildControls()
Controls.Clear()
ClearChildViewState()
BuildControl()
End Sub
重写init如下:
Protected Overrides Sub OnInit(ByVal e As System.EventArgs)
MyBase.OnInit(e)
save()
End Sub
这里想要实现的是一个图片上传控件,当我点击“上传图片”按钮时调用<input type=file>的点击事件,并打开浏览图片窗口选择图片。
现在问题就出来了,为何我在页面上引用这个控件,选择好图片后,页面上的Button点击第一次好像是没有反应,点击第二次页面就回传了,然后,我之前选择好的图片也就不见掉了。那这是啥问题?问题出在了哪?
请各路英雄好汉帮帮忙才是啊!