2009-07-15 77 views
0

我有一個ASP.NET 2.0應用程序中的FormView控件。我有數據庫在一列中存儲一個文件名(一個人的圖片)。我無法將列的值綁定到文件上傳控件 - 所以我試圖使用隱藏的表單域。下面是我有:FormView + FileUpload - 我可以根據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不一定能「預測」並可靠地將正確的文件名放入隱藏表單域

有什麼建議?

感謝

回答

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; 
    } 
}