Обязательный валидатор полей не работает при экспорте данных SQL в Excel через веб-страницу asp.net - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь экспортировать данные SQL через хранимую процедуру с несколькими параметрами через веб-страницу asp.net. Я поместил обязательные валидаторы полей в текстовые поля, используемые для параметров. Однако когда я оставляю текстовые поля пустыми и нажимаю кнопку «Экспорт», которая запускает код vb.net для экспорта, он запускает экспорт, и данные открываются в Excel.

Это странно, потому что у меня есть параметры в моем коде T-SQL, и хранимая процедура должна завершиться сбоем без этих данных.

 Enter your Keyer ID - (UXXXXXX)
 <asp:TextBox ID="txtKeyerID" runat="server" Width="75px" ></asp:TextBox>
 <asp:RequiredFieldValidator ID="rfvKeyerID" runat="server" ControlToValidate="txtKeyerID" Display="Dynamic" ForeColor="Maroon" ValidationGroup="export">* Enter your SAP User ID</asp:RequiredFieldValidator>
<asp:Button ID="btnExport" runat="server" Text="Export" UseSubmitBehavior="false" ValidationGroup="export"  />
 Protected Sub btnExport_Click(sender As Object, e As EventArgs) Handles btnExport.Click

        Dim strCompany As String = rblCompany.SelectedValue
        Dim strLanID As String = Mid(User.Identity.Name, 8)
        Dim strUserID As String = txtKeyerID.Text
        Dim strAuditID As String = txtAuditorID.Text
        Dim strSproc As String = Nothing

        Dim myConn As New SqlConnection(ConfigurationManager.ConnectionStrings("DatabaseName").ConnectionString)

        strSproc = "sp_DatabaseName_Export"

        Dim myCmd As New SqlCommand(strSproc, myConn)
        myCmd.CommandType = CommandType.StoredProcedure
        myCmd.CommandTimeout = 1000

        Using sda As New SqlDataAdapter()

            myCmd.Connection = myConn
            sda.SelectCommand = myCmd

            With myCmd.Parameters
                .Add(New SqlParameter("@company", strCompany))
                .Add(New SqlParameter("@lanID", strLanID))
                .Add(New SqlParameter("@Unum", strUserID))
                .Add(New SqlParameter("@UauditID", strAuditID))
            End With

            Using ds As New DataSet
                sda.Fill(ds)

                ds.Tables(0).TableName = "Winshuttle"
                ds.Tables(1).TableName = "AccrualAudit"

                Using wb As New XLWorkbook()
                    For Each dt As DataTable In ds.Tables
                        Dim ws = wb.Worksheets.Add(dt)

                        ws.Table("Table1").ShowAutoFilter = False ' remove the Filter from the table
                        ws.Table("Table1").Theme = XLTableTheme.None ' remove the formatting from the table

                    Next

                    Response.Clear()
                    Response.Buffer = True
                    Response.Charset = ""
                    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
                    Response.AddHeader("content-disposition", "attachment;filename=" & txtFileName.Text & ".xlsx")

                    Using MyMemoryStream As New MemoryStream()
                        wb.SaveAs(MyMemoryStream)
                        MyMemoryStream.WriteTo(Response.OutputStream)
                        Response.Flush()
                        Response.End()
                    End Using

                End Using
            End Using
        End Using

    End Sub
...