Как я могу иметь элемент управления загрузкой внутри gridview, используя Visual Basic, который загружает в базу данных? - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть сетка с именем gvALL_ACCESS, и я пытаюсь реализовать элемент управления загрузкой для каждой строки, однако я не могу этого понять!У меня есть столбец с именем COLFile в моей базе данных, который является типом данных varbinary (max).Моя цель - чтобы пользователь мог загрузить файл с помощью элемента управления FileUpload, а затем эти данные загружаются в столбец COLFile для созданной мной строки.Позвольте мне дать еще немного кода для контекста:

ASPX

<asp:GridView ID="gvALL_ACCESS" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDs_ALL_ACCESS"
                 DataKeyNames="RECNUM" OnRowCommand="gvALL_ACCESS_RowCommand" AllowSorting="True">
    <AlternatingRowStyle BackColor="LightGray" HorizontalAlign="Left" />
    <EditRowStyle HorizontalAlign="Left" />
    <RowStyle HorizontalAlign="Left" />
    <Columns>
        <asp:BoundField ControlStyle-Width="150" DataField="NAME" HeaderText="USERID" SortExpression="NAME" />
        <asp:TemplateField HeaderText="COL FILE">
            <ItemTemplate>
                    <asp:FileUpload ID="FileUpload1" runat="server" />
                    <asp:Button runat="server" ID="UploadButton" Text="Upload" onclick="UploadButton_Click"/>
            </ItemTemplate>

        </asp:TemplateField>
    </Columns>
</asp:GridView>

Итак, вы можете видеть, моя основная идея для этого состоит в том, чтобы пользователь выбрал файла затем нажмите кнопку загрузки.Код может выглядеть примерно так:

Псевдокод VB

Protected Sub gvALL_ACCESS_RowCommand(sender As Object, e As GridViewCommandEventArgs)
    Dim filename As String '= get the filename somehow'
    Dim contentType As String '= FileUpload1.PostedFile.ContentType get the contenttype somehow
    DIM ID = 'somehow get ID of row
    Using fs As Stream = FileUpload1.PostedFile.InputStream
        Using br As New BinaryReader(fs)
            Dim bytes As Byte() = br.ReadBytes(DirectCast(fs.Length, Long))
            Dim constr As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
            Using con As New SqlConnection(constr)
                Dim query As String = "update tblFiles set COLFile = @Data WHERE ID = @ID"
                Using cmd As New SqlCommand(query)
                    cmd.Connection = con
                    cmd.Parameters.Add("@Data", SqlDbType.Binary).Value = bytes
                    con.Open()
                    cmd.ExecuteNonQuery()
                    con.Close()
                End Using
            End Using
        End Using
    End Using
End Sub

Теперь я посмотрел на некоторые ресурсы, чтобы сделать это, но мне всегда кажется, чтоотсутствует только один важный элемент!Самый близкий ресурс, который я видел, был этот:

https://www.aspsnippets.com/Articles/Read-and-Write-BLOB-Data-to-SQL-Server-database-using-C-and-VBNet.aspx

Это почти делает то, что я хочу (и именно там я взял код VB), нопроблема в том, что он вставляет строки в таблицу, а не обновляет определенную строку в таблице.По сути, элемент управления не находится внутри gridview.

Я также видел эту ссылку,

Кнопка загрузки файла для каждой строки внутри gridview и кнопка для загрузки в asp.net

но проблема здесь в том, что код на C #, файл загружается на сервер (не в базу данных), и не похоже, что весь код, который мне нужен, есть.

К сожалению, все другие ресурсы, которые я видел, похоже, используют файловый сервер, а не базу данных, имеют код в C # или не предоставляют элемент управления ВНЕ сетки:

Я долженОбратите внимание: я даже не уверен, что использую правильную функцию в своем коде VB.Является ли это даже подходящим сабвуфером, который я хочу использовать?

Protected Sub gvALL_ACCESS_RowCommand(sender As Object, e As GridViewCommandEventArgs) 

В любом случае, я был бы очень признателен за то, как я могу решить мою проблему!Спасибо за любую помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...