FineUI 官方论坛

标题: 【已解决】PageMamager如果不放在Form中,FileUpload会失效 [打印本页]

作者: Lisa    时间: 2013-6-7 16:55
标题: 【已解决】PageMamager如果不放在Form中,FileUpload会失效
本帖最后由 Lisa 于 2013-6-13 11:40 编辑

代码写的比较乱,先不贴了。
现象就是只要在<xageManager ID="ageManager1" runat="server" AutoSizePanelID="anel1sss" />设置了AutoSizePanelID属性
那么FileUpload的HasFile就为False。
[attach]2441[/attach]
我动态添加了好多控件,嵌套了好多层,想不清楚是什么原因,排查了快一天才找出来。。。

作者: Lisa    时间: 2013-6-13 10:46
求解决这个问题啊
作者: sanshi    时间: 2013-6-13 10:58
用空项目写个重新问题的例子
作者: Lisa    时间: 2013-6-13 11:28
sanshi 发表于 2013-6-13 10:58
用空项目写个重新问题的例子

sanshi哥,整理例子的时候我作了个小改动,问题就解决了。
原来我是把<xageManager ID="ageManager1" runat="server" AutoSizePanelID="SimpleForm1" />放在<form id="form1" runat="server">  </form>的外面,现在是放在了里面,这个FieleUpload就可以用了。

现在的现象是:如果<xageManager ID="ageManager1" runat="server" />不加AutoSizePanelID属性,那么放在<form id="form1" runat="server"> </form>的外面和里面,FileUpload都可以用。
如果加上AutoSizePanelID属性,那么只有放在Form里面,FileUpload才可以用。
作者: sanshi    时间: 2013-6-13 11:31
Lisa 发表于 2013-6-13 11:28
sanshi哥,整理例子的时候我作了个小改动,问题就解决了。
原来我是把放在  的外面,现在是放在了里面, ...

哦,那就不是BUG了。

我就在想 AutoSizePanelID 是个UI属性,怎么会牵涉到上传的逻辑中来呢?


PageManager 必须要放在 form 里面。
作者: Lisa    时间: 2013-6-13 11:31
本帖最后由 Lisa 于 2013-6-13 11:33 编辑

这是用空项目做的例子
test.aspx
  1. <body>
  2.     <x:PageManager ID="PageManager1" runat="server"  AutoSizePanelID="SimpleForm1"/>
  3.     <form id="form1" runat="server">
  4.         <x:SimpleForm ID="SimpleForm1" BodyPadding="5px" runat="server" EnableBackgroundColor="true"
  5.             ShowBorder="True" Title="表单" Width="350px" ShowHeader="True">
  6.             <Items>
  7.                 <x:Image ID="imgPhoto" CssClass="photo" ImageUrl="~/images/blank.png" runat="server">
  8.                 </x:Image>
  9.                 <x:FileUpload runat="server" ID="filePhoto" ShowRedStar="false" LabelSeparator=""
  10.                     ButtonText="上传个人头像" ButtonOnly="true" Required="false" ShowLabel="true" Label="&nbsp;"
  11.                     AutoPostBack="true" OnFileSelected="filePhoto_FileSelected">
  12.                 </x:FileUpload>
  13.                 <x:TextBox runat="server" Label="用户名" ID="tbxUserName" Required="true" ShowRedStar="true">
  14.                 </x:TextBox>
  15.                 <x:TextBox runat="server" Label="邮箱" ID="tbxEmail" Required="true" RegexPattern="EMAIL"
  16.                     ShowRedStar="true">
  17.                 </x:TextBox>
  18.                 <x:Button ID="btnSubmit" runat="server" OnClick="btnSubmit_Click" ValidateForms="SimpleForm1"
  19.                     Text="提交表单">
  20.                 </x:Button>
  21.             </Items>
  22.         </x:SimpleForm>
  23.         <x:Label ID="labResult" CssClass="result" EncodeText="false" runat="server">
  24.         </x:Label>
  25.     </form>
  26. </body>
复制代码
test.aspx.cs
  1.         protected void Page_Load(object sender, EventArgs e)
  2.         {

  3.         }

  4.         protected void filePhoto_FileSelected(object sender, EventArgs e)
  5.         {
  6.             if (filePhoto.HasFile)
  7.             {
  8.                 string fileName = filePhoto.ShortFileName;
  9.                 fileName = fileName.Replace(":", "_").Replace(" ", "_").Replace("\", "_").Replace("/", "_");
  10.                 fileName = DateTime.Now.Ticks.ToString() + "_" + fileName;

  11.                 filePhoto.SaveAs(Server.MapPath("~/upload/" + fileName));

  12.                 imgPhoto.ImageUrl = "~/upload/" + fileName;

  13.                 // 清空文件上传组件
  14.                 filePhoto.Reset();
  15.             }

  16.         }


  17.         protected void btnSubmit_Click(object sender, EventArgs e)
  18.         {
  19.             if (imgPhoto.ImageUrl == "~/images/blank.png")
  20.             {
  21.                 filePhoto.MarkInvalid("请先上传个人头像!");

  22.                 Alert.ShowInTop("请先上传个人头像!");

  23.                 return;
  24.             }

  25.             labResult.Text = "<p>用户名:" + tbxUserName.Text + "</p>" +
  26.                     "<p>邮箱:" + tbxEmail.Text + "</p>" +
  27.                     "<p>头像地址:" + imgPhoto.ImageUrl + "</p>";

  28.             // 清空表单字段(注意,不要清空imgPhoto,否则就看不到上传的头像了)
  29.             filePhoto.Reset();
  30.             tbxEmail.Reset();
  31.             tbxUserName.Reset();

  32.         }
复制代码
就是在线示例“上传控件(自动回发)”的改动。
http://fineui.com/demo/#/demo/form/fileupload_autopostback.aspx
作者: Lisa    时间: 2013-6-13 11:34
sanshi 发表于 2013-6-13 11:31
哦,那就不是BUG了。

我就在想 AutoSizePanelID 是个UI属性,怎么会牵涉到上传的逻辑中来呢?

OK,多谢
作者: sanshi    时间: 2013-6-13 11:35
Lisa 发表于 2013-6-13 11:31
这是用空项目做的例子
test.aspxtest.aspx.cs就是在线示例“上传控件(自动回发)”的改动。
http://fineui ...

不用试了。

PageManager 必须要放在 form 里面!




欢迎光临 FineUI 官方论坛 (https://fineui.com/bbs/) Powered by Discuz! X3.4