<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 蜘蛛 閱讀(3624) 評論(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
    太感謝了  回復  更多評論
      

    主站蜘蛛池模板: 亚洲午夜电影在线观看高清| 久久精品国产精品亚洲精品 | 久久久久亚洲精品影视| 日日躁狠狠躁狠狠爱免费视频| 日韩中文无码有码免费视频| 亚洲日韩中文字幕无码一区| 免费高清在线影片一区| 亚洲AV无码XXX麻豆艾秋| 国产免费久久精品| 未满十八私人高清免费影院| 综合亚洲伊人午夜网| 高清永久免费观看| 亚洲AV无码一区二区三区DV| 91精品免费不卡在线观看| 亚洲精品视频在线观看免费| 午夜亚洲www湿好大| 亚洲免费在线播放| 午夜爽爽爽男女免费观看影院| 国内自产拍自a免费毛片| 亚洲精品无播放器在线播放 | 亚洲深深色噜噜狠狠爱网站| 国产午夜精品理论片免费观看| 国产亚洲精品va在线| 亚洲免费视频网址| 亚洲一线产品二线产品| 国产99视频免费精品是看6| 99re8这里有精品热视频免费| 亚洲色av性色在线观无码| 老司机在线免费视频| 真人无码作爱免费视频| 亚洲国产精品VA在线观看麻豆| 欧美三级在线电影免费| 永久免费毛片在线播放| 亚洲aⅴ无码专区在线观看 | 亚洲嫩模在线观看| 最近中文字幕mv免费高清电影 | 亚洲国产超清无码专区| 国产成人免费手机在线观看视频| 国产免费一区二区三区免费视频 | 亚洲综合激情视频| 免费a在线观看播放|