Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.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
Asp.net 文件上载在更新面板内的gridview中不工作_Asp.net_Datagridview_Asp.net Ajax - Fatal编程技术网

Asp.net 文件上载在更新面板内的gridview中不工作

Asp.net 文件上载在更新面板内的gridview中不工作,asp.net,datagridview,asp.net-ajax,Asp.net,Datagridview,Asp.net Ajax,我在gridview中有文件上传控制,gridview在更新面板中 当我尝试更新gridview时,一切正常,但文件上传的图像路径不保存 请帮帮我 page.aspx <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None

我在gridview中有文件上传控制,gridview在更新面板中 当我尝试更新gridview时,一切正常,但文件上传的图像路径不保存 请帮帮我

page.aspx

<asp:GridView ID="GridView1" runat="server"  AutoGenerateColumns="False" BackColor="White" 
                                BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="4" CellSpacing="4" 
                                DataKeyNames="pid" ForeColor="Black" ShowHeaderWhenEmpty="True" 
                                GridLines="Horizontal" onrowediting="GridView1_RowEditing" 
                                onrowupdating="GridView1_RowUpdating" 
                                onrowcancelingedit="GridView1_RowCancelingEdit" 
                                onrowdeleting="GridView1_RowDeleting">
                                <Columns>
                                    <asp:TemplateField HeaderText="Operation">
                                        <EditItemTemplate>
                                            <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="True" CommandName="Update" Text="Update"></asp:LinkButton>&nbsp;
                                            <asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel"></asp:LinkButton>
                                        </EditItemTemplate>
                                        <ItemTemplate>
                                            <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Edit" Text="Edit" ForeColor="#94b52c"></asp:LinkButton>&nbsp;
                                            <asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="Delete" Text="Delete" ForeColor="#94b52c"
                                                            OnClientClick="return confirm('Are You Sure Want To Delete ?');"></asp:LinkButton>
                                        </ItemTemplate>
                                        <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                                        <ItemStyle Font-Bold="True" HorizontalAlign="Center" VerticalAlign="Middle" />
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="Product ID" InsertVisible="False" SortExpression="pid">
                                        <EditItemTemplate>
                                            <asp:Label ID="lblpid" runat="server" Text='<%# Eval("pid") %>'></asp:Label>
                                        </EditItemTemplate>
                                        <ItemTemplate>
                                            <asp:Label ID="lblproductid" runat="server" Text='<%# Bind("pid") %>'></asp:Label>
                                        </ItemTemplate>
                                        <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                                        <ItemStyle Font-Bold="True" HorizontalAlign="Center" VerticalAlign="Middle" />
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="Product Detail" SortExpression="pdetail">
                                        <EditItemTemplate>
                                            <asp:TextBox ID="txtproductdetail" runat="server" Text='<%# Bind("pdetail") %>'></asp:TextBox>
                                        </EditItemTemplate>
                                        <ItemTemplate>
                                            <asp:Label ID="lblproductdetail" runat="server" Text='<%# Bind("pdetail") %>'></asp:Label>
                                        </ItemTemplate>
                                        <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                                        <ItemStyle Font-Bold="True" HorizontalAlign="Center" VerticalAlign="Middle" />
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="Product Image" SortExpression="pimage">
                                        <EditItemTemplate>
                                            <asp:FileUpload ID="FileUpload1" runat="server" />
                                        </EditItemTemplate>
                                        <ItemTemplate>
                                            <asp:Image ID="imgproductimage" runat="server" ImageUrl='<%# Bind("pimage") %>' Height="50px" Width="50px"/>
                                        </ItemTemplate>
                                        <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                                        <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                                    </asp:TemplateField>

                                </Columns>
                                <FooterStyle BackColor="#F0F0F0" ForeColor="Black" />
                                <HeaderStyle BackColor="#333333" Font-Bold="True" ForeColor="White" HorizontalAlign="Center" VerticalAlign="Middle"  />
                                <PagerStyle BackColor="White" ForeColor="Black" HorizontalAlign="Right" />
                                <SelectedRowStyle BackColor="#CC3333" Font-Bold="True" ForeColor="White" />
                                <SortedAscendingCellStyle BackColor="#F7F7F7" />
                                <SortedAscendingHeaderStyle BackColor="#4B4B4B" />
                                <SortedDescendingCellStyle BackColor="#E5E5E5" />
                                <SortedDescendingHeaderStyle BackColor="#242121" />
                            </asp:GridView>
    </ContentTemplate>
                        </asp:UpdatePanel>

只需在
之后为
文件上载程序添加
PostBackTrigger
,如下所示:

 </ContentTemplate>
  <Triggers>
  <asp:PostBackTrigger ControlID="FileUpload1" /> 
 </Triggers>
</asp:UpdatePanel> 
Update2
网格视图中添加事件
OnRowDataBound

<asp:gridview
    id="GridView1" 
    onrowdatabound="GridView1_RowDataBound"

更新面板无法与一些控件一起正常工作,类似于Fileupload。因此,尝试使用ajax调用,这是一个更好的选择。

我遇到了类似的问题,并使用以下解决方案修复了它

在代码隐藏中添加以下代码

Page.Form.Attributes.Add("enctype", "multipart/form-data");

protected void gvLineItems_RowDataBound(object sender, GridViewRowEventArgs e)
{
  if (e.Row.RowType == DataControlRowType.DataRow)
  {

    if (e.Row.RowState.Equals(DataControlRowState.Edit))
     {
       Button btnUpload = e.Row.FindControl("btnUpload") as Button;
       ScriptManager.GetCurrent(this).RegisterPostBackControl(btnUpload);
     }
  }
}
添加上述代码后,我能够检索fileUpload控制值

protected void UpdateRow(object sender, GridViewUpdateEventArgs e)
{
   FileUpload uploadedFile = (FileUpload)dgDocuments.Rows[editIndex].FindControl("UploadFile");
   if (uploadedFile.HasFile)
   {
    uploadedFile.SaveAs(FileUploadURL + "\\Temp\\" + uploadedFile.FileName);
   }
}

添加:Page.Form.Attributes.add(“enctype”、“多部分/表单数据”);要加载页面事件,请执行以下操作:

protected void Page_Load(object sender, EventArgs e)
        {
            Page.Form.Attributes.Add("enctype", "multipart/form-data"); 
             ..............................
         }
试试这个

</ContentTemplate>
  <Triggers>
  <asp:PostBackTrigger ControlID="GridView1" /> 
 </Triggers>
</asp:UpdatePanel>


只需添加Jisha Muthuswamy发布的“Page.Form.Attributes.Add(“enctype”,“multipart/Form data”);”。UpdatePanel包装的gridview中的FileUpload控件永远无法访问,因此无法设置为PostBackTrigger ControlID。谢谢

如果没有触发器,您会遇到什么错误没有错误。。但无法访问该文件的文件名。。所以在路径字段中,它只写~/user/product\u image/,但应该是~/user/product\u image/filename。jpg@merhardik如果您的答案已解决,请更新您的答案,因为我通过RegisterSyncPostBackControl或RegisterPostBackControl注册ID为“FileUpload1”的控制错误必须在MingContainer中实现,IPostBackDataHandler或IPostBackEventHandler它给出的错误类似于“在UpdatePanel中找不到触发器ID为'FileUpload1'的控件”'UpdatePanel1'“可能是因为FileUpload1在gridview中。”。。你能帮助PLZ直到不工作吗。。使用此代码不会有任何更改。。行更新也不是fireI所做的上述更改。现在它给出了以下错误:通过RegisterAsyncPostBackControl或RegisterPostBackControl注册的ID为“FileUpload1”的控件必须实现InAdminContainer、IPostBackDataHandler或IPostBackEventHandler。@Arshad如果可能,您可以尝试解决这个问题,因为它与此相同。解决方案是什么??你能详细说明一下吗??
protected void Page_Load(object sender, EventArgs e)
        {
            Page.Form.Attributes.Add("enctype", "multipart/form-data"); 
             ..............................
         }
</ContentTemplate>
  <Triggers>
  <asp:PostBackTrigger ControlID="GridView1" /> 
 </Triggers>
</asp:UpdatePanel>