在UpdatePanel的asp.net C#中AsyncFileUpload上传文件后,显示的GridView [英] display gridview after upload file in AsyncFileUpload in updatepanel asp.net c#
问题描述
我想在的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:LinkButton的ID =lnkBtnDelMadrek=服务器>删除< / ASP:LinkButton的>
< / 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屋!