网格视图编辑部件
本文关键字:编辑部 视图 网格 | 更新日期: 2023-09-27 18:35:22
我有一个网格视图,当用户单击任何行时,它应该将用户带到具有页面中提到的现有数据的编辑页面。
所以,我的问题是
-
我必须为编辑部分创建一个新的 aspx 页面吗?
-
如何在新页面中使用现有数据获取相应的用户。
请从我的 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>
请让我知道可以做些什么来实现这一目标。我已经编写了更新代码。只需要在上述两件事上提供帮助。
回答您的问题:
-
我必须为编辑部分创建一个新的 aspx 页面吗?
不,您实际上不需要单独的页面进行编辑,您可以做的是在额外的列中给出一个命令按钮,上面写着编辑,单击该按钮可以启用绑定到同一页面中数据的文本框。
-
如何在新页面中获取相应用户的现有数据。
答:如果你真的想使用另一个页面,只需使用一个链接按钮,可以使用模板字段将你重定向到你的修改页面,通过在查询字符串中传递记录的一些唯一 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"