Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 保存前在UpdatePanel中格式化数据_C#_Asp.net_Data Binding_Webforms - Fatal编程技术网

C# 保存前在UpdatePanel中格式化数据

C# 保存前在UpdatePanel中格式化数据,c#,asp.net,data-binding,webforms,C#,Asp.net,Data Binding,Webforms,我正在使用ASP.NEt WebForms中的UpdatePanel上载图像。我想在数据库中保存文件名,但不保存路径。我正在使用以下代码 <asp:TemplateField FooterText="Image 1" HeaderText="Image 1"> <ItemTemplate> <asp:Image ID="Image11" runat="server" ImageUrl='<%# Bind("pic") %>' He

我正在使用ASP.NEt WebForms中的UpdatePanel上载图像。我想在数据库中保存文件名,但不保存路径。我正在使用以下代码

 <asp:TemplateField FooterText="Image 1" HeaderText="Image 1">
    <ItemTemplate>
       <asp:Image ID="Image11" runat="server" ImageUrl='<%# Bind("pic") %>' Height="50px" onerror="this.style.display='none'" />
    </ItemTemplate>
    <EditItemTemplate>
       <asp:UpdatePanel ID="updatPanelImg1" UpdateMode="Conditional" runat="server">
          <Triggers>
             <asp:PostBackTrigger ControlID="uploadbutton" />
          </Triggers>
          <ContentTemplate>
             <asp:FileUpload ID="FileUpload1" runat="server" />
             <asp:Button runat="server" Text="Add image" OnClick="UploadbuttonClick" />
             <asp:Image ID="Image1" runat="server" ImageUrl='<%# Bind("pic") %>' onerror="this.style.display='none'" /> 
          </ContentTemplate>
        </asp:UpdatePanel>
      </EditItemTemplate>
    </asp:TemplateField>
编辑2: 要保存到数据库的代码

<asp:SqlDataSource 
  ID="SqlDataSourceNews" 
  runat="server" 
  ConnectionString="<%$ ConnectionStrings:connectionString %>" 
  UpdateCommand="UPDATE [foo] SET [pic] = @pic WHERE [id] = @id">
   <UpdateParameters>
      <asp:Parameter Name="pic" Type="String" />
   </UpdateParameters>
   <InsertParameters>
      <asp:Parameter Name="pic" Type="String" />
    </InsertParameters>
 </asp:SqlDataSource>

您正在绑定ItemTemplate中的
ImageUrl
属性(可能在GridView或FormView中?)

这就是为什么这个完整的虚拟路径被保存到数据库中。要解决此问题,必须将参数值绑定到隐藏控件,并且仅对图像控件使用eval:

<asp:Hidden ID="ImageFileName" runat="server" Value='<%# Bind("pic") %>' />
<asp:Image ... ImageUrl='<%# Eval("pic", "~/images/news/{0}") %>'

您正在绑定ItemTemplate中的
ImageUrl
属性(可能是在GridView或FormView中?)

这就是为什么这个完整的虚拟路径被保存到数据库中。要解决此问题,必须将参数值绑定到隐藏控件,并且仅对图像控件使用eval:

<asp:Hidden ID="ImageFileName" runat="server" Value='<%# Bind("pic") %>' />
<asp:Image ... ImageUrl='<%# Eval("pic", "~/images/news/{0}") %>'

UploadButton单击使用FileUpload1.FileName获取文件名。我更新我的问题以显示代码,但这是你的问题,你说“我想在数据库中保存文件名,但不是路径。”你已经知道如何获取文件名(FileUpload1.filename)。您将路径保存在数据库中的何处?virtualFilePath是/images/news/imagename.jpg,但我只想将imagename.jpg存储在数据库中。@magol:您是否混淆了数据库和文件系统?将文件保存在Web服务器上,而不是数据库管理系统中。@Tim Schmelter我也这么想,我看不出这个问题的主题“保存前在UpdatePanel中格式化数据”与“我想在数据库中保存文件名,但不想保存路径”之间有什么关系。仍然不理解您的问题@magol抱歉:(上传按钮单击使用FileUpload1.FileName获取文件名。我更新我的问题以显示代码,但这是您的问题,您说“我想将文件名保存在数据库中,但不是路径。”您已经知道如何获取文件名(FileUpload1.FileName)。您将路径保存在数据库中的何处?virtualFilePath是/images/news/imagename.jpg,但我只想将imagename.jpg存储在数据库中。@magol:您是否混淆了数据库和文件系统?将文件保存在Web服务器上,而不是dbms中。@Tim Schmelter我也这么想,我看不出这两者之间的关系问题“保存前在UpdatePanel中格式化数据”与“我想在数据库中保存文件名,但不是路径”相对应。仍然不理解您的问题@magol抱歉:(
var imageViewer = (Image)button.Parent.FindControl("Image1");
...
imageViewer.ImageUrl = virtualFilePath;
<asp:Hidden ID="ImageFileName" runat="server" Value='<%# Bind("pic") %>' />
<asp:Image ... ImageUrl='<%# Eval("pic", "~/images/news/{0}") %>'
var imageViewer = (Image)button.Parent.FindControl("Image1");
var imageFileName = (Hidden)button.Parent.FindControl("ImageFileName");
...
imageViewer.ImageUrl = virtualFilePath;
imageFileName.ImageUrl = fileName;