asp:网格视图中的链接按钮将音频文件从文件夹检索到 html 音频,以便它可以播放



>我有一个网络表单,它包含

<audio controls="controls" id="audio" runat="server"></audio>

<asp:GridView ID="GridView1" runat="server" GridLines="None" AutoGenerateColumns="False" DataSourceID="SqlDataSource1">
    <Columns>
            <asp:TemplateField HeaderText="Name" SortExpression="Name">                    
                <ItemTemplate>
                    <asp:LinkButton ID="LinkButton1" runat="server" Text='<%# Bind("Name") %>' OnClick="LinkButton1_Click"></asp:LinkButton>
                </ItemTemplate>
            </asp:TemplateField>
        <asp:BoundField DataField="Date" HeaderText="Date" SortExpression="Date" />
    </Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConStr %>" SelectCommand="SELECT [Name], [Date] FROM [tablename]"></asp:SqlDataSource>

我被困在代码后面。我想通过检查数据库中的日期和路径来播放文件夹中的音频文件。我在 vb 中有类似于以下代码的东西

audio.Attributes("src") = "Audio/" 'I am unable to continue from here.

您可以将 LinkButton 从 OnClick 更改为OnCommand 。这样您就可以随之发送CommandArgument

<asp:LinkButton ID="LinkButton1" runat="server" CommandArgument='<%# Eval("FileName") %>' OnCommand="LinkButton1_Command">LinkButton1</asp:LinkButton>

然后在代码隐藏的 Command 方法中,您可以从命令参数中获取文件名,并将其用作播放器的源。

protected void LinkButton1_Command(object sender, CommandEventArgs e)
{
    string fileName = e.CommandArgument.ToString();
    audio.Attributes.Add("src", Server.MapPath("/Audio/" + fileName));
}

更新

如果文件名始终是 LinkButton 的文本,则还可以将发件人强制转换为一个并获取 Text 属性。

protected void LinkButton1_Command(object sender, CommandEventArgs e)
{
    LinkButton lb = sender as LinkButton;
    audio.Attributes.Add("src", Server.MapPath("/Audio/" + lb.Text));
}

最新更新