在UpdatePanel的asp.net C#中AsyncFileUpload上传文件后,显示的GridView [英] display gridview after upload file in AsyncFileUpload in updatepanel asp.net c#

查看:174
本文介绍了在UpdatePanel的asp.net C#中AsyncFileUpload上传文件后,显示的GridView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在的UpdatePanel使用AsyncFileUpload

在上传的文件,我想显示GridView控件上传的文件。

我用这个方法,但上传后,我无法看到GridView控件。请大家帮我看看我的GridView控件。

我的脚本是:

 <脚本类型=文/ JavaScript的LANGUAGE =JavaScript的>
    VAR ifIgnoreError = FALSE;
    功能uploadError时(发件人,参数){
         如果(ifIgnoreError){
            $获得(<%= lblStatus.ClientID%GT;)。style.color =红;
            $获得(<%= lblStatus.ClientID%GT;)。innerHTML的=文件不允许;
            警报(允许文件.JPG,将.jpeg,.png,.gif要点);
        }
        其他{
            警报(args.get_message());
        }
    }    功能StartUpload(发件人,参数){        变种文件名= args.get_fileName();
        变种fileExtension = fileName.substring(fileName.lastIndexOf()+1'。');
        如果(fileExtension =='JPG'|| fileExtension =='JPEG'|| fileExtension =='巴'|| fileExtension =='GIF'){            $获得(<%= lblStatus.ClientID%GT;)。style.color =绿色;
            $获得(<%= lblStatus.ClientID%GT;)。innerHTML的=上传...;
        }
        其他{
            ifIgnoreError =真;
            sender._stopLoad();
        }
    }
    功能UploadComplete(发件人,参数){
       $获得(&下;%= lblStatus.ClientID%gt;中)。style.color =#33CCFF;
       $获得(<%= lblStatus.ClientID%GT;)。innerHTML的=文件已成功上传;//如果code是取消注释,我看不到的GridView
变种btnClick =的document.getElementById(btnClick);
        btnClick.click();
//如果code取消注释,文件上传两次
     // __doPostBack('UpdatePanel1','');    }
< / SCRIPT>

和HTML是:

 < ASP:的ScriptManager ID =ScriptManager1=服务器>
    < / ASP:ScriptManager的>    < ASP:的UpdatePanel ID =UpdatePanel1=服务器的UpdateMode =条件>
       <&触发器GT;
        < ASP:AsyncPostBackTrigger控件ID =btnClick事件名称=点击/>
         < /触发器>
    <&的ContentTemplate GT;
       < ASP:AsyncFileUpload ID =AsyncFileUpload1=服务器的ClientIDMode =自动识别
OnClientUploadComplete =UploadCompleteOnClientUploadError =uploadError时
OnClientUploadStarted =StartUploadErrorBackColor =#66CCFFonuploadedcomplete =AsyncFileUpload1_UploadedCompleteThrobberID =活动指示器
UploaderStyle =传统UploadingBackColor =#66CCFFWIDTH =400像素/> < ASP:按钮=服务器ID =btnClick文本=更新网格的风格=显示:无/>
< ASP:标签ID =活动指示器=服务器>
< IMG SRC =../../图像/页/ loading19.gifALIGN =absmiddleALT =装载/>
< / ASP:标签>
< ASP:标签ID =lblStatus=服务器风格=FONT-FAMILY:宋体; FONT-SIZE:11像素;>< / ASP:标签>  < ASP:GridView控件ID =GrdMadarek的AutoGenerateColumns =假=服务器>
    <柱体和GT;
    < ASP:的TemplateField>
    <&ItemTemplate中GT;
        < ASP:图片ID =ImgMadarek=服务器WIDTH =50像素HEIGHT =40像素的ImageUrl ='<%#的eval(MadrakFileName,〜/文件/ {0})%&GT ;/>
    < / ItemTemplate中>
    < / ASP:的TemplateField>
        < ASP:的TemplateField>
    <&ItemTemplate中GT;
        < ASP:LinkBut​​ton的ID =lnkBtnDelMadrek=服务器>删除< / ASP:LinkBut​​ton的>
    < / ItemTemplate中>
    < / ASP:的TemplateField>
    < /专栏>
  < / ASP:GridView的>
     < /&的ContentTemplate GT;
     < / ASP:的UpdatePanel>

在aspx.cs

和code是:

 保护无效的Page_Load(对象发件人,EventArgs的发送)
    {
        如果(Request.Params.Get(__ EVENTTARGET)==UploadPostback)
        {        }
        其他
        {
            如果(AsyncFileUpload1.HasFile)
            {
                字符串FinalFileName = Path.GetExtension(AsyncFileUpload1.FileName);
                串strPath的=的MapPath(〜/文件/)+ FinalFileName;
                AsyncFileUpload1.SaveAs(strPath的);
                如果(会话[MadarekList]!= NULL)
                {
                    VAR MadarekList =(列表< MadrakDetails>)会议[MadarekList];
                    MadrakDetails Madrak =新MadrakDetails();
                    Madrak.MadrakFileName = FinalFileName;
                    MadarekList.Add(Madrak);
                    会话[MadarekList] = MadarekList;
                    GrdMadarek.DataSource = MadarekList;
                    GrdMadarek.DataBind();
                      }
                其他
                {
                    VAR MadarekList =新的List< MadrakDetails>();
                    MadrakDetails Madrak =新MadrakDetails();
                    Madrak.MadrakFileName = FinalFileName;
                    MadarekList.Add(Madrak);
                    会话[MadarekList] = MadarekList;
                    GrdMadarek.DataSource = MadarekList;
                    GrdMadarek.DataBind();
                }
            }
        }
    }公共类MadrakDetails
    {
        字符串madrakFileName =的String.Empty;        公共字符串MadrakFileName
        {
            {返回madrakFileName; }
            集合{madrakFileName =价值; }
        }    }
    保护无效AsyncFileUpload1_UploadedComplete(对象发件人,AjaxControlToolkit.AsyncFileUploadEventArgs E)
    {
    //没有code在这里
    }


解决方案

添加下面的一行每一个地方,你绑定你的GridView行之后[ GrdMadarek.DataBind()]

  UpdatePanel1.Update();

此外,尝试使用事件 onuploadedcomplete AsyncFileUpload 的控制权,以节省您的文件。

 保护无效AsyncFileUpload1_UploadedComplete
    (对象发件人,AjaxControlToolkit.AsyncFileUploadEventArgs E)
{  如果(AsyncFileUpload1.HasFile)
  {
    串strPath的=的MapPath(〜/ UploaddedFiles /)+ Path.GetFileName(e.filename);
    AsyncFileUpload1.SaveAs(strPath的);
     ...
     ...
     GrdMadarek.DataBind();
     UpdatePanel1.Update();  }
}

请参考 文章在这里。

I want use AsyncFileUpload in updatepanel

after uploaded file, I want display uploaded file in gridview.

I use this method, but after upload I can't see gridview. Please help me to see my gridview.

my scripts is:

<script type="text/javascript" language="javascript">
    var ifIgnoreError = false;
    function uploadError(sender, args) {
         if (ifIgnoreError) {
            $get("<%=lblStatus.ClientID%>").style.color = "red";
            $get("<%=lblStatus.ClientID%>").innerHTML = " File not permitted ";
            alert("Allowed file is  .jpg ,.jpeg,.png,.gif   ");
        }
        else {
            alert(args.get_message());
        }
    }

    function StartUpload(sender, args) {

        var fileName = args.get_fileName();
        var fileExtension = fileName.substring(fileName.lastIndexOf('.') + 1);
        if (fileExtension == 'jpg' || fileExtension == 'jpeg' || fileExtension == 'png' || fileExtension == 'gif') {

            $get("<%=lblStatus.ClientID%>").style.color = "green";
            $get("<%=lblStatus.ClientID%>").innerHTML = "Uploading...";
        }
        else {           
            ifIgnoreError = true;
            sender._stopLoad();
        }
    }


    function UploadComplete(sender, args) {
       $get("<%=lblStatus.ClientID%>").style.color = "#33CCFF";
       $get("<%=lblStatus.ClientID%>").innerHTML = "The file was uploaded successfully";

//If this code is uncomment, I can't see gridview            
var btnClick = document.getElementById("btnClick"); 
        btnClick.click();


//If this code uncomment, file uploaded twice
     //   __doPostBack('UpdatePanel1', '');

    }
</script>

and html is :

<asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>

    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
       <Triggers>       
        <asp:AsyncPostBackTrigger ControlID="btnClick" EventName="Click" />    
         </Triggers>
    <ContentTemplate>
       <asp:AsyncFileUpload ID="AsyncFileUpload1" runat="server" ClientIDMode="AutoID"                                        
OnClientUploadComplete="UploadComplete" OnClientUploadError="uploadError" 
OnClientUploadStarted="StartUpload"  ErrorBackColor="#66CCFF"                                        onuploadedcomplete="AsyncFileUpload1_UploadedComplete" ThrobberID="Throbber" 
UploaderStyle="Traditional" UploadingBackColor="#66CCFF" Width="400px" />

 <asp:Button runat="server" ID="btnClick" Text="Update grid" style="display:none"/>


<asp:Label ID="Throbber" runat="server">
<img src="../../images/Pages/loading19.gif" align="absmiddle" alt="loading" />             
</asp:Label>
<asp:Label ID="lblStatus" runat="server"     Style="font-family: tahoma; font-size: 11px;"></asp:Label>

  <asp:GridView ID="GrdMadarek" AutoGenerateColumns="false" runat="server">
    <Columns>
    <asp:TemplateField>
    <ItemTemplate>
        <asp:Image ID="ImgMadarek" runat="server"  Width="50px" Height="40px" ImageUrl='<%#Eval("MadrakFileName","~/files/{0}")%>'/>
    </ItemTemplate>
    </asp:TemplateField>
        <asp:TemplateField>
    <ItemTemplate>
        <asp:LinkButton ID="lnkBtnDelMadrek" runat="server">delete</asp:LinkButton>
    </ItemTemplate>
    </asp:TemplateField>
    </Columns>
  </asp:GridView>
     </ContentTemplate>
     </asp:UpdatePanel>

and code in aspx.cs is :

protected void Page_Load(object sender, EventArgs e)
    {      
        if (Request.Params.Get("__EVENTTARGET") == "UploadPostback")
        {

        }
        else
        {
            if (AsyncFileUpload1.HasFile)
            {
                string FinalFileName = Path.GetExtension(AsyncFileUpload1.FileName);
                string strPath = MapPath("~/files/") + FinalFileName;
                AsyncFileUpload1.SaveAs(strPath);


                if (Session["MadarekList"] != null)
                {
                    var MadarekList = (List<MadrakDetails>)Session["MadarekList"];
                    MadrakDetails Madrak = new MadrakDetails();
                    Madrak.MadrakFileName = FinalFileName;
                    MadarekList.Add(Madrak);
                    Session["MadarekList"] = MadarekList;
                    GrdMadarek.DataSource = MadarekList;
                    GrdMadarek.DataBind();
                      }
                else
                {
                    var MadarekList = new List<MadrakDetails>();
                    MadrakDetails Madrak = new MadrakDetails();
                    Madrak.MadrakFileName = FinalFileName;
                    MadarekList.Add(Madrak);
                    Session["MadarekList"] = MadarekList;
                    GrdMadarek.DataSource = MadarekList;
                    GrdMadarek.DataBind();
                }
            }
        }
    }

public class MadrakDetails
    {
        string madrakFileName = string.Empty;

        public string MadrakFileName
        {
            get { return madrakFileName; }
            set { madrakFileName = value; }
        }

    }
    protected void AsyncFileUpload1_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
    {
    //   no code here
    }

解决方案

Add the below line AFTER every line where you bind your GridView [GrdMadarek.DataBind()]

UpdatePanel1.Update();

Also, try using the event onuploadedcomplete of AsyncFileUpload control to save your files.

protected void AsyncFileUpload1_UploadedComplete
    (object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
{

  if (AsyncFileUpload1.HasFile)
  {
    string strPath = MapPath("~/UploaddedFiles/") + Path.GetFileName(e.filename);
    AsyncFileUpload1.SaveAs(strPath);
     ...
     ...
     GrdMadarek.DataBind();
     UpdatePanel1.Update();

  }
}

Refer the article here.

这篇关于在UpdatePanel的asp.net C#中AsyncFileUpload上传文件后,显示的GridView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆