asp.net - C# 如何在 GridView 上创建超链接 OnClick 事件?

标签 asp.net gridview

我在创建我想要的 GridView 时遇到问题。 我希望用户进入网站并查看附加到数据库的 GridView。 列有:ID、InsertionTime、文件路径、ProcessedByUser 现在我希望用户单击他/她想要处理的文件路径。当他/她单击文件路径时,我希望将他们的用户名(使用内置 asp 网站身份验证登录)更新(添加)到数据库中。

我的标记是标准的,我不必管理后台代码。

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    DataKeyNames="ID" DataSourceID="AccessDataSource1" 
    onselectedindexchanged="GridView1_SelectedIndexChanged">
    <Columns>
        <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" 
            ReadOnly="True" SortExpression="ID" />
        <asp:BoundField DataField="starttime" HeaderText="starttime" 
            SortExpression="starttime" />
        <asp:HyperLinkField DataNavigateUrlFields="path" DataTextField="path" 
            HeaderText="path" />
        <asp:BoundField DataField="user" HeaderText="user" SortExpression="user" />
    </Columns>
</asp:GridView>

我尝试使用 HyperlinkField 但它似乎不支持 onlick 事件。

有什么建议吗? 谢谢。

最佳答案

我假设您正在寻找 LinkButton 具有 OnClick 的控件事件。

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    DataKeyNames="ID" DataSourceID="AccessDataSource1" 
    onselectedindexchanged="GridView1_SelectedIndexChanged">
    <Columns>
        <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" 
            ReadOnly="True" SortExpression="ID" />
        <asp:BoundField DataField="starttime" HeaderText="starttime" 
            SortExpression="starttime" />
        <asp:TemplateField HeaderText="Path" SortExpression="Filepath">
            <ItemTemplate>
                <asp:LinkButton ID="LbPath" runat="server" 
                    Text='<%# Eval("Filepath") %>'
                    CommandName="PathUpdate" 
                    CommandArgument='<%#Bind("path") %>'>
                </asp:LinkButton>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="user" HeaderText="user" SortExpression="user" />
    </Columns>
</asp:GridView>

现在您可以处理 LinkButton's click eventGridView's RowCommand事件。

protected void Gridview1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "PathUpdate")
    {
        string path= e.CommandArgument.ToString();
        // do you what you need to do
    }
}

请注意,我使用了 TemplateField这是 GridView 中最动态的列类型因为您可以添加任何您想要的内容,甚至是嵌套的 GridView 或 UserControls .

关于asp.net - C# 如何在 GridView 上创建超链接 OnClick 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15290392/

相关文章:

C# - 如何更改 HTML 元素属性

android - 通过拖动 block 选择多个项目

android - 加载下一页成功后 GridView 总是滚动到顶部

c# - 当 ChildRow 没有数据时,从 XtraGrid GridView 的 MasterRow 中删除向下钻取加号图标 (+)

c# - 更新绑定(bind) Observable 集合的一个元素

c# - 将 GridView 导出到数据表问题

javascript - 标签或 div 不会显示在 javaScript 复选框更改事件上

c# - 在使用 XmlSerializer 序列化期间排除对象

c# - 在没有azure的IIS服务器上发布MVC 5

css - 通过有 Angular Material 的不同高度的 md 卡的响应网格