我在 datalist 的 edit模板添加了 一个fileupload 点击更新就将图片存入数据库
不知道什么原因无法保存到后台, 我 只有50分了 希望 大家来帮忙撒
下面是我的代码
protected void DataList1_UpdateCommand(object source, DataListCommandEventArgs e)
{
string id = DataList1.DataKeys[e.Item.ItemIndex].ToString(); //获取索引id
try
{
// FileUpload filePhote = (FileUpload)e.Item.FindControl("FileUpload1");//获取更新的图片文件
FileUpload PhotoFile = (FileUpload)e.Item.ItemIndex.FindControl("FileUpload1");
if ((PhotoFile == null) || (!PhotoFile.HasFile))
{
return;
}
// 取得上传之照片文件的长度。
int fileLen = PhotoFile.PostedFile.ContentLength;
// 创建一个字节数组来存储文件的内容。
byte[] Input = new byte[fileLen];
Input = PhotoFile.FileBytes;
using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["NetworkTopologyConnectionString"].ConnectionString))
{
using (SqlCommand cmd = new SqlCommand("UPDATE Topology_controlType SET Ficon = @Photo WHERE FtypeID = @Id", cn))// 更新
{
cmd.Parameters.Add("@Id", SqlDbType.NVarChar, 18).Value = Id;
cmd.Parameters.Add("@Photo", SqlDbType.Image).Value = Input;
cn.Open();
cmd.ExecuteNonQuery();
}
}
DataList1.EditItemIndex = -1;//
DataList1.DataBind();
}
catch
{}
}
不知道什么原因无法保存到后台, 我 只有50分了 希望 大家来帮忙撒
下面是我的代码
protected void DataList1_UpdateCommand(object source, DataListCommandEventArgs e)
{
string id = DataList1.DataKeys[e.Item.ItemIndex].ToString(); //获取索引id
try
{
// FileUpload filePhote = (FileUpload)e.Item.FindControl("FileUpload1");//获取更新的图片文件
FileUpload PhotoFile = (FileUpload)e.Item.ItemIndex.FindControl("FileUpload1");
if ((PhotoFile == null) || (!PhotoFile.HasFile))
{
return;
}
// 取得上传之照片文件的长度。
int fileLen = PhotoFile.PostedFile.ContentLength;
// 创建一个字节数组来存储文件的内容。
byte[] Input = new byte[fileLen];
Input = PhotoFile.FileBytes;
using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["NetworkTopologyConnectionString"].ConnectionString))
{
using (SqlCommand cmd = new SqlCommand("UPDATE Topology_controlType SET Ficon = @Photo WHERE FtypeID = @Id", cn))// 更新
{
cmd.Parameters.Add("@Id", SqlDbType.NVarChar, 18).Value = Id;
cmd.Parameters.Add("@Photo", SqlDbType.Image).Value = Input;
cn.Open();
cmd.ExecuteNonQuery();
}
}
DataList1.EditItemIndex = -1;//
DataList1.DataBind();
}
catch
{}
}
{
return;
}
不报错,估计语句没错,就是逻辑不对,是不是执行到这句就 return 了 或是其它的地方
你检查一下
到现在为止我 怀疑问题出在这里. PhotoFile 里面没有东西.
赋值不进去.
{
return;
}
将这句注释之后 执行报错内容 为 未将对象引用设置到实例
{
return;
}
将这句注释之后 执行报错内容 为 未将对象引用设置到实例
根据上面的判断可以,可以肯定PhotoFile里面没有东西了...
顺便说一句 FileUpload PhotoFile = (FileUpload)e.Item.ItemIndex.FindControl("FileUpload1");
正确的代码为 FileUpload PhotoFile = (FileUpload)e.Item.FindControl("FileUpload1");
是我粘贴上这里的时候没弄好
是能找到FileUpload1的~没什么问题~检查一下控件命名~
是 CommandName指定成了Update 要更新哦.不然指定到哪里去
你把你的代码整理一下~
再发一次~
FileUpload PhotoFile = (FileUpload)e.Item.ItemIndex.FindControl("FileUpload1"); (找不到FileUpload1)
楼顶这句是有问题的~后来你又说改过了~
问题我已经自行解决.不是代码没有问题.
因为我用了 ajax插件的 UpdatePanel控件 所以无法正常运行.
给UpdatePanel控件 triggers属性增加一个postbacktriggers. postbacktriggers的crotrolid设置为datalist1
就能正常更新 显示数据了.
谢谢大家的关心
结帖