asp.net - строки - gridview c# asp net




C#Как создать событие Hyperlink OnClick в GridView? (2)

У меня возникли проблемы с созданием GridView, который я хочу. Я хотел бы, чтобы пользователь зашел на сайт и увидел GridView, который прикреплен к БД. Столбцы: ID, InsertionTime, Filepath, ProccessedByUser Теперь я хочу, чтобы пользователь ID, InsertionTime, Filepath, ProccessedByUser он / она хотел обработать. Когда он / она нажимает путь к файлу, я хочу, чтобы их имя пользователя (вошедшее со встроенной аутентификацией веб-сайта 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 управления 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>

Теперь вы можете обрабатывать событие RowCommand событие RowCommand GridView's .

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 поскольку вы можете добавлять все, что хотите, даже вложенные GridViews или UserControls .





gridview