<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    探索與發現

    研究java技術

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      83 隨筆 :: 0 文章 :: 109 評論 :: 0 Trackbacks
    ASP.NET Ajax中的UpdatePanel和asp.net中FileUpload控件是不兼容的,但是采用下面的方法,可以在ASP.NET+Ajax下實現文件上傳
    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
         <Triggers>
         <asp:PostBackTrigger ControlID="btnUpload" />
         </Triggers>
    <ContentTemplate>
    <asp:FileUpload ID="FileUpload1" runat="server" Width="400px" />
    <asp:Button ID="btnUpload" runat="server" Text="上傳" OnClick="btnUpload_Click" />
    </ContentTemplate>
    </asp:UpdatePanel>
    把提交上傳文件的按鈕放在<Triggers>標簽內,而不放在<ContentTemplate>中,特別注意把UpdateMode設為Conditional。然后在btnUpload_Click方法中執行保存文件和寫入數據庫的操作。當然這樣做,上傳文件時就失去了異步交互的效果,但是,在執行其它操作的時候,都還是有Ajax特性的。另外,如果您的這個上傳文件的頁面使用了一個母版頁,并且在母版頁中有一個UpdatePanel,在母版頁中對子頁的控件加上<Triggers>是不行的,還好,UpdatePanel是可以嵌套的。




    方案一、如果將scriptmanager的enablepartialrending設為false則可以正確上傳,這個方法最簡單,但是會有缺陷,就是在同一個頁面上的多個UpdatePanel不可以獨自刷新了。另外,當你的UpdatePanel中存在Validator的話,會造成整個頁面postback,這個問題似乎是Altas的一個bug.

    方案二、摘自http://www.netfocus.cn/article950.html

    1:主頁面中使用UpdatePanel,然后UpdatePanel里面放置的不是FileUpload控件,而是一個Iframe
    2:這個iframe在鏈接一個新的頁面,那個頁面里面有FileUpload控件。
    3:上傳完畢后,告訴主頁面上傳得結果

    先看一個直接使用FileUpload的例子:這個例子里面,服務端是無法找到上傳文件的。

                <atlas:UpdatePanel ID="up1" Mode="Conditional" runat="server">
                    
    <ContentTemplate>
                        
    <asp:FileUpload ID="FileUpload1" runat="server" />
                        
    <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
                     
    < SPAN>ContentTemplate>
                
    < SPAN>atlas:UpdatePanel>


    看看,我們該如何實現
    1:新建主頁面Default.aspx
          在適當的位置,放置一個上傳附件的UpdatePanel區域
         

                <atlas:UpdatePanel ID="up_attachment" Mode="Conditional" runat="server">
                    
    <ContentTemplate>
                       
    <iframe id="file" name="file" src="attachment.aspx">< SPAN>iframe>
                    
    < SPAN>ContentTemplate>
                
    < SPAN>atlas:UpdatePanel>

    2:新建上傳文件的頁面attachment.aspx,然后放上FileUpload控件

    <div>
        
    <asp:FileUpload ID="FileUpload1" runat="server" />
              
    <asp:Button ID="Button1" runat="server" Text="OK" OnClick="Button1_Click" />
        
    < SPAN>div>

    3:在attachment.aspx里面,上傳文件之后調用主頁面的js,報告上傳情況。這是函數原型:

        <script>
          window.top.callBack(fileName);
        
    < SPAN>script>

    4:Default.aspx主頁面里面增加這個函數,處理返回值
      

        <script>
         function callBack(fileName)
      
    {
            document.getElementById(
    'Attach1').innerHTML=fileName;
         }

        
    < SPAN>script>
    posted on 2009-05-13 21:31 蜘蛛 閱讀(3627) 評論(2)  編輯  收藏 所屬分類: SharePoint

    評論

    # re: ASP.NET Ajax Uploadfile控件使用 2009-05-13 21:35 蜘蛛
    自定義用戶控件文件 PicUpload.ascx

    1<%@ control language="C#" autoeventwireup="true" inherits="Admin_PicUpload, App_Web_mboefw14" %>
    2 <asp:Image ID="EP_Image" runat="server" Height="160px" ImageUrl='<%# Bind("EP_Pic") %>'
    3 Width="314px" />
    4<br />
    5<asp:FileUpload ID="FileUpload1" runat="server" />
    6<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="上傳" />
    自定義用戶控件文件 PicUpload.ascx.cs

    1using System;
    2using System.Data;
    3using System.Configuration;
    4using System.Collections;
    5using System.Web;
    6using System.Web.Security;
    7using System.Web.UI;
    8using System.Web.UI.WebControls;
    9using System.Web.UI.WebControls.WebParts;
    10using System.Web.UI.HTMLControls;
    11
    12public partial class Admin_PicUpload : System.Web.UI.UserControl
    13{
    14 protected void Page_Load(object sender, EventArgs e)
    15 {
    16
    17 }
    18 protected void Button1_Click(object sender, EventArgs e)
    19 {
    20 bool fileOK = false;
    21 //獲取根文件絕對路徑
    22 string path = Server.MapPath("~/UpLoad/");
    23 //如上傳了文件,就判斷文件格式
    24 FileUpload FU = FileUpload1;
    25 if (FU.HasFile)
    26 {
    27 string fileExtension = System.IO.Path.GetExtension(FU.FileName).ToLower();
    28 string[] allowedExtensions ={ ".gif", ".jpg", ".png", ".bmp", };
    29 for (int i = 0; i < allowedExtensions.Length; i++)
    30 {
    31 if (fileExtension == allowedExtensions[i])
    32 {
    33 fileOK = true;
    34 }
    35 }
    36 }
    37 //調用saveas方法,實現上傳文件
    38 if (fileOK)
    39 {
    40 try
    41 {
    42 FileUpload1.SaveAs(path + System.DateTime.Now.ToString("yyyyMMddhhmmss")+FU.FileName);
    43 EP_Image.ImageUrl = "../Upload/" + System.DateTime.Now.ToString("yyyyMMddhhmmss") + FU.FileName;
    44 Button1.Text = "上傳成功";
    45 }
    46 finally
    47 {
    48 }
    49 }
    50 else
    51 {
    52 Button1.Text = "上傳失敗,格式不允許";
    53 }
    54 }
    55}
    56
      回復  更多評論
      

    # re: ASP.NET Ajax Uploadfile控件使用 2009-05-29 10:31 iven
    太感謝了  回復  更多評論
      

    主站蜘蛛池模板: 国内精品99亚洲免费高清| 免费一级毛片无毒不卡| 亚洲Av永久无码精品黑人| 亚洲Av无码一区二区二三区| 亚洲人成激情在线播放| 国产亚洲精品91| 中文字幕免费观看视频| 在线免费中文字幕| 热久久精品免费视频| 美腿丝袜亚洲综合| 亚洲免费福利在线视频| 一级黄色毛片免费看| 91人人区免费区人人| 亚洲精品视频观看| 人妻免费久久久久久久了| 67194国产精品免费观看| 亚洲性日韩精品一区二区三区| 久久久久亚洲AV无码麻豆| 亚洲Av无码国产一区二区 | 亚洲人成色4444在线观看| XXX2高清在线观看免费视频| 色妞WWW精品免费视频| 亚洲人成伊人成综合网久久久| 亚洲一卡2卡3卡4卡乱码 在线 | 免费做爰猛烈吃奶摸视频在线观看| 亚洲人配人种jizz| heyzo亚洲精品日韩| 亚洲日本香蕉视频观看视频| 中国一级毛片视频免费看| 内射干少妇亚洲69XXX| 午夜私人影院免费体验区| 亚洲影视一区二区| 国产免费卡一卡三卡乱码| 亚洲人xxx日本人18| 亚洲成av人片一区二区三区| 亚洲日本天堂在线| 亚洲精品色婷婷在线影院| 看亚洲a级一级毛片| 成全视频在线观看免费高清动漫视频下载| 亚洲日本中文字幕| a国产成人免费视频|