网格视图编辑部件

本文关键字:编辑部 视图 网格 | 更新日期: 2023-09-27 18:35:22

我有一个网格视图,当用户单击任何行时,它应该将用户带到具有页面中提到的现有数据的编辑页面。

所以,我的问题是

  1. 我必须为编辑部分创建一个新的 aspx 页面吗?

  2. 如何在新页面中使用现有数据获取相应的用户。

请从我的 aspx 页面参考我的网格视图代码:-

<asp:GridView ID="grdUser"
            AllowPaging="true"
            AutoGenerateColumns="False"
            OnDataBound="grdUser_DataBound"
            OnRowDeleting="grdUser_RowDeleting"
            OnPreRender="PreRenderGrid"
            runat="server"
            Width="100%"
            border="1"
            DataKeyNames="Id"
            PageSize="2"
            OnPageIndexChanging="grdUser_PageIndexChanging"
            EnableSortingAndPagingCallbacks="false"
            CssClass="pagi">
            <Columns>
                <asp:TemplateField HeaderText="Select" ItemStyle-Width="30" HeaderStyle-CssClass="k-grid td">
                    <ItemTemplate>
                        <asp:CheckBox ID="chkDelete" runat="server" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="username" HeaderText="UserName" ItemStyle-Width="30" HeaderStyle-CssClass="k-grid td" />
                <asp:BoundField DataField="email" HeaderText="Email Id" ItemStyle-Width="30" HeaderStyle-CssClass="k-grid td" />
                <asp:BoundField DataField="usertype" HeaderText="UserType" ItemStyle-Width="30" HeaderStyle-CssClass="k-grid td" />
                <asp:BoundField DataField="active" HeaderText="Active" ItemStyle-Width="30" HeaderStyle-CssClass="k-grid td" />
                <asp:TemplateField HeaderText="Action" HeaderStyle-Width="15%" ItemStyle-Width="30" HeaderStyle-CssClass="k-grid td">
                    <ItemTemplate>
                        <asp:ImageButton ID="btnDelete" AlternateText="Delete" ImageUrl="~/images/delete.png" runat="server" Width="15" Height="15" CommandName="Delete" CommandArgument='<%# Eval("Id") %>' CausesValidation="false" OnClientClick="return confirm('Are you sure you want to delete this record?')" />
                    </ItemTemplate>
                    <ItemTemplate>
                        <asp:ImageButton ID="btnEdit" AlternateText="Edit" ImageUrl="~/images/edit.png" runat="server" Width="15" Height="15" CommandArgument='<%# Eval("Id") %>' CausesValidation="false" onClick=""  />
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>   </Gridview>

请让我知道可以做些什么来实现这一目标。我已经编写了更新代码。只需要在上述两件事上提供帮助。

网格视图编辑部件

回答您的问题:

  1. 我必须为编辑部分创建一个新的 aspx 页面吗?

    ,您实际上不需要单独的页面进行编辑,您可以做的是在额外的列中给出一个命令按钮,上面写着编辑,单击该按钮可以启用绑定到同一页面中数据的文本框。

  2. 如何在新页面中获取相应用户的现有数据。

    答:如果你真的想使用另一个页面,只需使用一个链接按钮,可以使用模板字段将你重定向到你的修改页面,通过在查询字符串中传递记录的一些唯一 ID。在修改页面中,您可以读取查询字符串,获取 id 并根据 id 从数据库表中检索数据。

像这样:

在网格视图中添加一个字段:

<asp:TemplateField HeaderText="Modify">
<ItemTemplate>
<asp:HyperLink ID="hypEdit" runat="server" NavigateUrl="" Text="Modify"></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>

在代码中隐藏的行数据绑定事件 gridvew

protected void grdUser_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            HyperLink Hyp = (HyperLink)e.Row.FindControl("hypEdit");
            Hyp.NavigateUrl = "~/ParentDir/youModifyPage.aspx?ID=" + ((Label)e.Row.FindControl("lblId")).Text; 
           //here lblID refers to a label field added in your gridview to hold ID,
           //I see you have already retrieved the id in an image button
        }
    }

确保在网格视图中包含 OnrowDataBound onrowdatabound="grdUser_RowDataBound"