Я пытаюсь экспортировать данные таблицы в CSV, но данные столбца Audiofilename не отображаются

#c# #asp.net #asp.net-core #export-to-csv

#c# #asp.net #asp.net-core #экспорт в csv

Вопрос:

Я пытаюсь экспортировать данные таблицы в файл csv в asp.net я успешно экспортировал, но данные столбца имени аудиофайла не отображаются в загруженном файле (это кнопка в теге TemplateField, мне нужно напечатать текст кнопки в csv-файле), что-нибудь, что я забыл добавить? Как исправить эту проблему? Спасибо

.aspx-код

  <asp:GridView ID="GridView1" Font-Size="Medium" CssClass="mGrid" runat="server"
                            HeaderStyle-CssClass="header-center" PageSize="15"
                            AutoGenerateColumns="false" AllowPaging="True" AllowSorting="True"
                            OnRowCommand="GridView1_RowCommand" OnRowDataBound="GridView1_RowDataBound" OnPageIndexChanging="GridView1_PageIndexChanging">

                            <Columns>
                                <%--<asp:BoundField DataField="ID" HeaderText="ID" ItemStyle-ForeColor="White" />--%>
                                <asp:TemplateField>
                                    <ItemTemplate>
                                        <asp:Label ID="lblID" runat="server" Text='<%#Eval("Id")%>' CommandArgument='<%#Eval("Id")%>' Visible="false">
                                        </asp:Label>
                                    </ItemTemplate>
                                </asp:TemplateField>

                                <asp:BoundField DataField="Name" HeaderText="Vendor Name" />
                                <asp:BoundField DataField="AudFileSize" HeaderText="AudFileSize" />
                                <asp:BoundField DataField="AudFileDuration" HeaderText="AudFileDuration" />

                              <%--  <asp:TemplateField HeaderText="Audio FileName">
                                    <ItemTemplate>

                                        <asp:Button ID="btnAudioFileName"
                                            Text='<%#System.IO.Path.GetFileNameWithoutExtension(Eval("AudioFileName").ToString())%>'
                                            runat="server" CommandArgument='<%#Eval("AudioFileName")%>'
                                            class="btn btn-link" CommandName="AudioFileName" />
                                        <%-- <sup><asp:Label ID ="lblrepetedCount"  Text='<%#Eval("Reject")%>' runat="server"
                                            CommandArgument='<%#Eval("Reject")%>'  CommandName="Reject"></asp:Label></sup>--%>
                                   <%-- </ItemTemplate>
                                </asp:TemplateField>--%>

                                 <asp:TemplateField HeaderText="Audio FileName">
                                    <ItemTemplate>

                                        <asp:Button ID="btnAudioFileName"
                                            Text='<%#System.IO.Path.GetFileNameWithoutExtension(Eval("AudioFileName").ToString())%>'
                                            runat="server" CommandArgument='<%#Eval("AudioFileName")%>'
                                            class="btn btn-link"  CommandName="AudioFileName" />
                                        <%-- <sup><asp:Label ID ="lblrepetedCount"  Text='<%#Eval("Reject")%>' runat="server"
                                            CommandArgument='<%#Eval("Reject")%>'  CommandName="Reject"></asp:Label></sup>--%>
                                    </ItemTemplate>
                                </asp:TemplateField>


                                <%--<asp:BoundField DataField="FirstName" HeaderText="Physician Name" />--%>
                                <%--<asp:BoundField DataField="PhysicianID" HeaderText="PhysicianID" />--%>

                                <asp:BoundField DataField="MrnNo" HeaderText="MrnNo" NullDisplayText=" " />
                                <asp:BoundField DataField="PatientName" HeaderText="PatientName" NullDisplayText=" "/>
                                <asp:BoundField DataField="PhysicianName" HeaderText="PhysicianName" />

                                <asp:BoundField DataField="Reject" HeaderText="Reject" Visible="false" />
                                <%--<asp:BoundField DataField="BucketName" HeaderText="Bucket Name" Visible="false" />--%>

                                <asp:TemplateField Visible="false">
                                    <ItemTemplate>
                                        <asp:Label ID="lblBucketName" runat="server" Text='<%#Eval("BucketName")%>' CommandArgument='<%#Eval("BucketName")%>' Visible="false">
                                        </asp:Label>
                                    </ItemTemplate>
                                </asp:TemplateField>
                            </Columns>
                        </asp:GridView>

  

.cs-код здесь

   protected void btnExportToCSV_Click(object sender, EventArgs e)
        {
            ExportGridToCSV();
        }
        private void ExportGridToCSV()
        {

            //To Export all pages
            GridView1.AllowPaging = false;
            FillData();
            Response.Clear();
            Response.Buffer = true;
            Response.AddHeader("content-disposition", "attachment;filename=Transcribeworkdetails.csv");
            Response.Charset = "";
            Response.ContentType = "application/text";
            GridView1.AllowPaging = false;
            GridView1.DataBind();
         
            string[] hiddenCols = { "", "Reject" };


            StringBuilder columnbind = new StringBuilder();

            for (int k = 0; k < GridView1.Columns.Count; k  )
            {
              bool isHidden = true;
                foreach (string str in hiddenCols)
                {
                    if (GridView1.Columns[k].HeaderText == str)
                    {
                        isHidden = false;
                        break;
                    }
                }
                if (isHidden)
                    columnbind.Append(GridView1.Columns[k].HeaderText   ',');
            }

            columnbind.Append("rn");
            for (int i = 0; i < GridView1.Rows.Count; i  )
            {
                for (int k = 0; k < GridView1.Columns.Count; k  )
                {
                   

                    bool isHidden = true;
                    foreach (string str in hiddenCols)
                    {
                        if (GridView1.Columns[k].HeaderText == str)
                        {

                            isHidden = false;
                            break;
                        }

                    }
                    if (isHidden)
                    {
                        
                        columnbind.Append(GridView1.Rows[i].Cells[k].Text   ',');

                    }
                }

                columnbind.Append("rn");
            }
            Response.Output.Write(columnbind.ToString());
            Response.Flush();
            Response.End();
        }
  

Комментарии:

1. Не пытайтесь изобретать колесо самостоятельно, используйте специализированную библиотеку для экспорта csv: joshclose.github.io/CsvHelper

2. Вам не хватает следующего: <asp:BoundField DataField=