gridview 问题,解决不了,求大家帮忙...

crazynet2011 2012-07-17 01:35:29
前台

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>

</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<%-- <asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>--%>
<asp:GridView ID="gdvData" runat="server" AutoGenerateColumns="false" OnRowEditing="gdvData_RowEditing"
OnRowUpdating="gdvData_RowUpdating">
<Columns>
<asp:TemplateField HeaderText="图片">
<ItemTemplate>
xxx</ItemTemplate>
<EditItemTemplate>
<asp:FileUpload ID="FileUpload1" runat="server"></asp:FileUpload></EditItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowEditButton="true" />
</Columns>
</asp:GridView>
<%-- </ContentTemplate>
</asp:UpdatePanel>--%>
图片:<input type="file" runat="server" id="InputFile" style="width: 132px;" /><br />
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
</div>
</form>
</body>
</html>


后台


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
private static List<string> files = new List<string> { "a", "b" };
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
BinData();
}
}

private void BinData()
{
gdvData.DataSource = files;
gdvData.DataBind();
}
protected void gdvData_RowEditing(object sender, GridViewEditEventArgs e)
{
gdvData.EditIndex = e.NewEditIndex;
BinData();
}

protected void gdvData_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
Response.Write((gdvData.Rows[e.RowIndex].FindControl("FileUpload1") as FileUpload).FileName + "<br/>");

string upFile = ((FileUpload)gdvData.Rows[e.RowIndex].FindControl("FileUpload1")).PostedFile.FileName;
UpLoad(upFile);
}
protected void Button1_Click(object sender, EventArgs e)
{
UpLoad(InputFile.Value);
}

private string UpLoad(string img)
{
string pictureName = "";

int idx = img.LastIndexOf('.');

string suffx = img.Substring(idx);

pictureName = DateTime.Now.Ticks.ToString() + suffx;

if (img != "")
{
string path = Server.MapPath("Upload/Image/");

InputFile.PostedFile.SaveAs(path + pictureName);
}

return pictureName;
}
}


我有两个问题,
第一个:
如果在gridview外层 添加个 UpdatePanel无刷新控件 ,那么在后台获取FileUpload1就会报错,这是为什么?
第二个:
在gridview外放个上传控件,然后上传图片,OK没问题,但是在gridview里的那个上传控件 ,我如果上传图片,那么图片就是0KB,打开 提示“没有预览” 这又是为什么?
求解释?求解决?
...全文
187 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
孟子E章 2012-07-17
  • 打赏
  • 举报
回复
你怎么测试的不可以啊?
你可以直接拷贝下面的代码测试,不要做任何修改

<%@ Page Language="C#" EnableViewState="true" %>

<%@ Import Namespace="System.Xml" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
private static List<string> files = new List<string> { "a", "b" };
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
BinData();
}
}

private void BinData()
{
gdvData.DataSource = files;
gdvData.DataBind();
}
protected void gdvData_RowEditing(object sender, GridViewEditEventArgs e)
{
gdvData.EditIndex = e.NewEditIndex;
BinData();
}

protected void gdvData_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
FileUpload upFile = gdvData.Rows[e.RowIndex].FindControl("FileUpload1") as FileUpload;
Image Image1 = gdvData.Rows[e.RowIndex].FindControl("Image1") as Image;
if (upFile != null)
{
Image1.Visible = true;
Image1.ImageUrl = "~/" + UpLoad(upFile);
}
else
{
Response.Write("Error");
}
}

private string UpLoad(FileUpload img)
{
string pictureName = "";
pictureName = DateTime.Now.Ticks.ToString() + System.IO.Path.GetFileName(img.FileName);
string path = Server.MapPath("~/" + pictureName);
img.SaveAs(path);
return pictureName;
}

</script>
<html>
<head>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:GridView ID="gdvData" runat="server" AutoGenerateColumns="false" OnRowEditing="gdvData_RowEditing"
OnRowUpdating="gdvData_RowUpdating">
<Columns>
<asp:TemplateField HeaderText="图片">
<ItemTemplate>
xxx</ItemTemplate>
<EditItemTemplate>
<asp:Image ID="Image1" runat="server" Visible="false" Width="100" />
<asp:FileUpload ID="FileUpload1" runat="server"></asp:FileUpload></EditItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowEditButton="true" />
</Columns>
</asp:GridView>
</form>
</body>
</html>
StarlightHan 2012-07-17
  • 打赏
  • 举报
回复
FileUpload是上传控件,不是获取路径控件
crazynet2011 2012-07-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

是不是没有获取到gridview里的FileUpload1的id啊?你看看数据库中有没有存入数据,要是没有的话就是

没有获取到控件的值!
[/Quote]
有,就是用gridview里的上传控件后,图片是0KB
crazynet2011 2012-07-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

参数是string怎么保存文件啊
[/Quote]
参数是 图片的路径,没问题啊,我改成您那样的也不行,图片还是0KB
H_Gragon 2012-07-17
  • 打赏
  • 举报
回复
是不是没有获取到gridview里的FileUpload1的id啊?你看看数据库中有没有存入数据,要是没有的话就是

没有获取到控件的值!
孟子E章 2012-07-17
  • 打赏
  • 举报
回复
参数是string怎么保存文件啊
crazynet2011 2012-07-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

string upFile = ((FileUpload)gdvData.Rows[e.RowIndex].FindControl("FileUpload1")).PostedFile.FileName;
UpLoad(upFile);

你这里已经错误了
应该是

FileUpload upFile =gdvData.Rows[e.RowIndex].FindControl("Fi……
[/Quote]
那我把gridview的FileUpload控件改成file控件,也不行啊,参数是string就不行吗 为什么要FileUpload 类型呢
孟子E章 2012-07-17
  • 打赏
  • 举报
回复
string upFile = ((FileUpload)gdvData.Rows[e.RowIndex].FindControl("FileUpload1")).PostedFile.FileName;
UpLoad(upFile);

你这里已经错误了
应该是

FileUpload upFile =gdvData.Rows[e.RowIndex].FindControl("FileUpload1") as FileUpload;
if(upFile!=null)
UpLoad(upFile);


private string UpLoad(FileUpload img)
{
string pictureName = "";
pictureName = DateTime.Now.Ticks.ToString() + Path.GetFileName(img);

string path = Server.MapPath("~/Upload/Image/" + pictureName );
img.SaveAs(path );


return pictureName;
}
孟子E章 2012-07-17
  • 打赏
  • 举报
回复
默认UpdatePanel不能上传的
可以参见

在UpdatePanel上使用FileUpload上传文件
http://blog.csdn.net/zhaoqiliang527/article/details/4457961

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧