0
你好,我尝试添加一个FileUpload一个DetailsView内我在此附上一些地方从我的代码:文件上传里面在编辑模式下的DetailsView
<asp:DetailsView ID="DetailsView1" runat="server" Height="50px" Width="586px"
DefaultMode="Edit" AutoGenerateRows="False" BorderColor="White"
BorderStyle="None" DataSourceID="EntityDataSource1" GridLines="None" DataKeyNames="UserName" OnItemUpdated="DetailsView1_ItemUpdated" ONItemEditing="DetailsView1_ItemEditing">
然后FileUpload控件放在模板领域内:
<asp:TemplateField HeaderText="Foto">
<EditItemTemplate>
<asp:FileUpload ID="FileUpload1" runat="server" />
</EditItemTemplate>
</asp:TemplateField>
和数据源是:
<asp:EntityDataSource ID="EntityDataSource1" runat="server"
ConnectionString="name=mesteriEntities" DefaultContainerName="mesteriEntities"
EnableFlattening="False" EntitySetName="Users"
EnableUpdate="True" AutoGenerateWhereClause="True"
EnableInsert="True">
<WhereParameters>
<asp:SessionParameter Name="UserName" SessionField="New" Type="String" />
</WhereParameters>
</asp:EntityDataSource>
后面的代码:
protected void DetailsView1_ItemEditing(object sender, DetailsViewInsertEventArgs e)
{
FileUpload fu1 = (FileUpload)DetailsView1.FindControl("FileUpload1");
if (fu1 == null)
e.Cancel = true;
if (fu1.HasFile)
{
try
{
string fileName = Guid.NewGuid().ToString();
string virtualFolder = "~/UserPics/";
string physicalFolder = Server.MapPath(virtualFolder);
// StatusLabel.Text = "Upload status: File uploaded!";
string extension = System.IO.Path.GetExtension(fu1.FileName);
fu1.SaveAs(System.IO.Path.Combine(physicalFolder, fileName + extension));
e.Values["foto"] = System.IO.Path.Combine(physicalFolder, fileName + extension);
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}
else
e.Cancel = true;
}
我不知道为什么不起作用。它不会上传服务器上的文件,也不会在文件的数据库中添加引用。我在这里做错了吗?
谢谢
谢谢!我不在乎看到他/她发布了什么。 – adatapost
谢谢..补充仍然不工作,我应该挖掘更多...我是.net初学者。 – Teodor
正在工作..非常感谢你! – Teodor