【问题标题】:uploading file from Gridview into Database asp.net将文件从 Gridview 上传到数据库 asp.net
【发布时间】:2020-01-10 22:11:33
【问题描述】:

网格视图具有文件上传功能,可将图像上传到 SQL Server 数据库。但是在控制文件上传实体时,它会给出“对象引用未设置为对象实例”的错误。 请帮我找到问题或给我一些我遵循的方法来实现将图像从网格视图上传到数据库的问题

代码文件

if (e.CommandName == "upload")

            {
                string status = "";

                Button bt = (Button)e.CommandSource;
                GridViewRow grdRow = (GridViewRow)bt.Parent.Parent;
                TextBox amount = (TextBox)grdRow.Cells[0].FindControl("txtAmount");
                FileUpload doc = (FileUpload)grdRow.Cells[0].FindControl("passbookUpload");
                // FileUpload doc = (FileUpload)grdRow.Cells[0].FindControl("FileUpload");
                Label UdiseCode = (Label)grdRow.Cells[0].FindControl("lblUdiseCode");
                Label Remaining = (Label)grdRow.Cells[0].FindControl("lblremainingName");


                if (string.IsNullOrEmpty(amount.Text.Trim())
                    || string.IsNullOrEmpty(doc.ToString())
                 )
                {

                    amount.BorderColor = System.Drawing.Color.Red;
                    doc.BorderColor = System.Drawing.Color.Red;


                    //  box8.BorderColor = System.Drawing.Color.Red;
                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('abc')", true);

                    return;
                }
                else
                {

                    string filename = Path.GetFileName(doc.PostedFile.FileName);
                    string fileExtension = Path.GetExtension(filename);
                    int fileSize = doc.PostedFile.ContentLength;

                    if (!(fileExtension.ToLower() == ".png") || (fileExtension.ToLower() == ".jpeg")
                   || (fileExtension.ToLower() == ".bmp") || (fileExtension.ToLower() == ".gif")
                     || (fileExtension.ToLower() == ""))
                    {
                        ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('abc2|')", true);
                        doc.BorderColor = System.Drawing.Color.Red;
                        return;
                    }
                    Stream stream = doc.PostedFile.InputStream;
                    BinaryReader binaryReader = new BinaryReader(stream);
                    Byte[] imageData = binaryReader.ReadBytes((int)stream.Length);
                    DL_Reimbursement.SaveReimbursementAmount(ddlSession.SelectedValue.ToString(), ddldistrict.SelectedValue.ToString(), ddlBlock.SelectedValue.ToString(), UdiseCode.ToString(), Convert.ToInt32(Remaining), Convert.ToInt32(amount), imageData, out status);
                    if (status == "INS")
                    {
                        ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('abc3')", true);

                    }
                    else
                    {
                        ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('कृपया डाटा को जांच ले तथा दोबारा प्रयास करे!|')", true);
                    }

                }
}

网格的aspx文件

 <asp:GridView ID="gvFetchRecords" runat="server" AutoGenerateColumns="False" HeaderStyle-Font-Bold="true" OnRowDataBound="gvFetchRecords_RowDataBound" OnRowCommand="GVBankAccDetails_RowCommand"
                                EmptyDataText="No Report Detail(s) were found !" PageSize="1000" AllowPaging="true">
                                <Columns>

                                    <asp:TemplateField ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center" FooterStyle-HorizontalAlign="Center">
                                        <ItemTemplate>
                                            <%#Container.DataItemIndex +1 %>
                                        </ItemTemplate>
                                    </asp:TemplateField>

                                     <asp:TemplateField HeaderText="Udise Code" ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center">
                                        <ItemTemplate>
                                            <asp:Label ID="lblUdiseCode" runat="server" Text='<%#Eval("Udise_Code") %>'></asp:Label>
                                        </ItemTemplate>

                                    </asp:TemplateField>

                                    <asp:TemplateField HeaderText="School Name" ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center">
                                        <ItemTemplate>
                                            <asp:Label ID="lblUdiseName" runat="server" Text='<%#Eval("School_Name") %>'></asp:Label>
                                        </ItemTemplate>

                                    </asp:TemplateField>
                                     <asp:TemplateField HeaderText="baaki rashi" ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center">
                                        <ItemTemplate>
                                            <asp:Label ID="lblremainingName" runat="server" Text='<%#Eval("Remaining") %>'></asp:Label>
                                        </ItemTemplate>

                                    </asp:TemplateField>

                                     <asp:TemplateField HeaderText="Rashi added" ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center">
                                            <ItemTemplate>
                                                <asp:TextBox ID="txtAmount" runat="server" Style="Width: 130px;"></asp:TextBox>
                                            </ItemTemplate>

                                        </asp:TemplateField>

                                    <asp:TemplateField HeaderText="Document Upload" ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center">
                                            <ItemTemplate>

                                               <asp:FileUpload ID="passbookUpload" runat="server"></asp:FileUpload>
                                            </ItemTemplate>

                                        </asp:TemplateField>

                                      <asp:TemplateField HeaderText="सुरक्षित करे" ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center">
                                            <ItemTemplate>
                                                <asp:Button ID="btnSave" runat="server" CssClass="govBtnS" Text="सुरक्षित करे" CommandName="upload" Style="Width: 100px;" />
                                            </ItemTemplate>

                                        </asp:TemplateField>
                                     <asp:TemplateField HeaderText="डाउनलोड करे" ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center">
                                        <ItemTemplate>
                                            <asp:LinkButton ID="lblDownload" runat="server" Text="डाउनलोड करे" CommandName="download" ></asp:LinkButton>
                                        </ItemTemplate>
                                    </asp:TemplateField>

                                      <asp:TemplateField HeaderText="Status" ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center">
                                            <ItemTemplate>
                                              <asp:Label ID="lblStatus" runat="server" Text='<%#Eval("IsUpdated") %>' Visible="false"></asp:Label>
                                                <asp:Image ID="gvImage" runat="server" />
                                            </ItemTemplate>

                                        </asp:TemplateField>

                                    </Columns>
                                </asp:GridView>

【问题讨论】:

  • 你调试过你的代码吗?代码中哪一行抛出异常?
  • 字符串文件名 = Path.GetFileName(doc.PostedFile.FileName);此行引发错误。并在调试此行时: FileUpload doc = (FileUpload)grdRow.Cells[0].FindControl("passbookUpload");它也没有显示任何内容,可能是控制问题。剩余变量获取各自的值期望文件上传类型变量
  • FileUpload doc = (FileUpload)grdRow.Cells[0].FindControl("passbookUpload"); 会抛出错误,因为passbookUpload 不在Cell[0] 中。我认为它在Cells[5]。这样,您还需要检查其他控件...您正在使用Cells[0] 进行所有控件...但并非所有控件都在Cells[0] 中。您需要使用适当的单元格索引器来获得适当的控制。
  • 我也改成Cells[5],还是一样的错误

标签: c# asp.net gridview file-upload


【解决方案1】:

尝试更改文件上传 ID 的名称。有时它可能会产生问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-31
    • 1970-01-01
    • 2014-12-07
    • 2021-06-25
    • 2017-05-16
    • 2011-12-12
    相关资源
    最近更新 更多