Hopes

Start Here..

 

ASP.Net 对上传组件美化

ASP.Net 对上传组件美化 (2010-11-27 16:47:38)转载▼ 标签: it 客户端 文本框 控件 绝对路径 美化 uploadfile 上传控件 分类: 程序 
 
新浪会自动对getElementById加_X请自行查询这个函数
 貌似网易是正常的跳转
 ASP.NET 的上传组件在客户端显示为
<input type="file" id="fp" " />
在一个很美观的页面中出现file很不协调,
尤其是input type="file"的 按钮无法被css美化
 先从客户端着手,
 用一个文本框和一个按钮代替input type="file" ,
然后将<input type="file" style="display:none;" />隐藏。
这样button就可以被css 处理了。
当点击按钮时用javascript激活 file组件的click
<script language="javascript">
  function xx() {
    document.getElementByIdx_x("fp").click(); 
      document.getElementByIdx_x("fpurl").value=document.getElementByIdx_x("fp").value; 
   }
</script> 
 <input type="text" id="fpurl" style="width:300px;" /> <input onClick="xx();" type="button" value="文本框和输入框都可以自定义样式" style='width:300px; border:1px solid #000; background:gray;color:#fff;font-weight:bold;font-size:13px;'>
  <input type="file" id="fp" style="display:none;" />
 这样客户端实现了美化FileUplad的控件
 将这段代码转换成ASP.NET 可以使用的方式
  <input id="txtUploadFile" style="border: 1px solid #C0C0C0;width:300px" />
  <input type="button" value="浏览.." onClick="document.getElementByIdx_x('<%=FileUpload1.ClientID %>').click();" style="border-style: hidden; border-width: 0px; background-position: 0px 0px; background-image: url('images/button_2.jpg'); background-repeat: no-repeat; width: 52px; height: 23px;" />
   <asp:FileUpload ID="FileUpload1" runat="server" />
   <input id="fpurl" type="hidden" value=<%=FileUpload1.ClientID %> />
因为ASP.NET的程序ID到了客户端会被改变,所以用隐藏字段来存储FileUpload的客户端ID.
 JS也相应改变.
function UploadOnpropertychange() {
  //JS获取上传控件的值,即所上传文件的绝对路径<%=FileUpload1.ClientID %> 
var varUploadFile = document.getElementByIdx_x_x(document.getElementByIdx_x("fpurl").value).value; 
//将路径值通过split函数切割分成一个数组集合 
 //使用这个函数,这个地方主要是为了获取文件名 
var varArray = varUploadFile.split('\\'); 
 //最后将所需要的文件名赋给文本框  document.getElementByIdx_x("txtUploadFile").value = varArray[varArray.length - 1]; 
 }
 最后在cs文件中加上
protected void Page_Load(object sender, EventArgs e) { 
   if (!IsPostBack) { 
 //先将控件隐藏 
      this.FileUpload1.Attributes.Add("style", "display:none"); 
 //监视属性变化,此时主要用于捕捉文件路径的写入值 
      this.FileUpload1.Attributes.Add("onpropertychange", "UploadOnpropertychange()"); 
 }
 这样就可以在ASP.NET 使用 CSS处理 FileUpload组件了。










美化上传控件的办法;

2007-04-27 16:39 by 迷路中的路人甲, 365 阅读, 0 评论, 收藏编辑
还有一个问题就是,如何利用这一个控件,进行多个文档的上传工作?
    利用dom操作,当每次选择了一个文件的时候,隐藏该file域,在相同位置创建一个新的供下次点击,删除的时候只要直接删掉隐藏的就行了[初步想法未经证实]
一直以来上传控件input file都无法进行美化,例如换个图片什么的;查了很多资料最终就是需要利用隐藏file域实现上传功能;其实很简单,从163里面找了一个样式出来,搞定;

js代码: //依赖prototype.js
function selfile()
{
  $(
"fileurl").value = $("file").value;
}   

css代码://来自mail.163.com
a.addfile{width:70px;height:20px;position:relative;cursor:hand;top:4px;top/**/:0;text-decoration:none;background-position:-823px -17px;display:inline;float:left;margin-top:-5px;margin-top/**/:-1px}
*:lang(zh) a.addfile
{margin-top:-2px;cursor:pointer}
a.addfile:hover
{background-position:-911px -17px;text-decoration:none}
input.addfile
{width:1px;height:18px;cursor:pointer!important;cursor:hand;position:absolute;top:5px;left:-5px;left/**/:-3px;opacity:0;filter:alpha(opacity=0)}
*:lang(zh) input.addfile
{left:-18px}

html代码://
<input type="text" value="" id="fileurl" name="fileurl" readonly/>
<a  href="#" class="addfile"> <input type="file" name="file" id="file" hideFocus class="addfile" onChange="selfile();"/>+添加附件(也可以放个美化的图片) </a>
分类: 代码收藏






posted on 2012-07-18 21:23 ** 阅读(1024) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

公告

你好!

常用链接

留言簿(2)

随笔档案

文章分类

文章档案

新闻档案

相册

收藏夹

C#学习

友情链接

搜索

最新评论

阅读排行榜

评论排行榜