FormView + FileUpload - 我可以根据fileupload更改绑定字段吗?

时间:2009-07-15 16:02:05

标签: asp.net

我在ASP.NET 2.0应用程序中有一个FormView控件。我有一个数据库在列中存储文件名(一个人的图片)。我无法将列的值绑定到fileupload控件 - 所以我正在尝试使用隐藏的表单字段。这就是我所拥有的:

<asp:HiddenField ID="pictureLink" runat="server" Value='<%# Bind("pictureLink") %>' />
<asp:FileUpload ID="pic" runat="server" />

代码背后:

//ItemUpdating event handler
void do_update(object sender, FormViewUpdateEventArgs e)
{
    FileUpload newpic = (FileUpload)profile_edit.FindControl("pic");
    if (newpic.HasFile)
    {
      //do a bunch of file uploading "stuff" which makes a new file name
      e.Keys["pictureLink"] = new_filename;
    }
}

我的目标是将隐藏的表单字段的值更新为新更新的文件名,以便正确更新数据库。

我认为我很接近 - 但似乎我无法以编程方式改变事后的任何绑定数据字段。

我尝试使用javascript来更改控件 - 但新文件名实际上与他们上传的内容不同;哪个javascript不一定“预测”并可靠地将正确的文件名放入隐藏的表单字段

有什么建议吗?

由于

2 个答案:

答案 0 :(得分:1)

我认为你可能需要改变e.NewValues,而不是e.Keys。请参阅NewValues property on MSDN,它可能会指向正确的方向。

答案 1 :(得分:0)

好的 - 我在发布问题后发现答案的时间不长。如果有人有更好(更优雅)的解决方案,我会保持开放状态。基本上,我更改do_update事件处理程序以拦截文件上载。如果有文件,那么我编辑NewValues集合,以便数据库接收新文件名而不是旧文件名。

//ItemUpdating event handler
void do_update(object sender, FormViewUpdateEventArgs e)
{
    FileUpload newpic = (FileUpload)profile_edit.FindControl("pic");
    if (newpic.HasFile)
    {
      //do a bunch of file uploading "stuff" which makes a new file name
      //HERE IS THE CHANGE - update the newvalues object to the new file name
      e.NewValues[1] = new_filename;
    }
}