我有一个Gridview,当用户点击任何一行时,它应该将用户带到页面中提到的现有数据的编辑页面。
所以,我的问题是
我是否必须为编辑部分创建一个新的aspx页面?
如何在新页面中为相应的用户提供现有数据。
请参阅我的aspx页面中的gridview代码: -
<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>
让我知道为了实现这一目标可以做些什么。我已经写了更新代码。只需要帮助解决上述两件事。
答案 0 :(得分:1)
您的问题的答案:
我是否必须为编辑部分创建一个新的aspx页面?
Ans。不,你真的不需要一个单独的页面进行编辑,你可以做的是在一个额外的列中给出一个命令按钮说编辑,点击它可以启用文本框绑定在同一页面中显示您的数据。
如何在新页面中获取相应用户的现有数据。
Ans。如果您真的想要使用其他页面,只需使用链接按钮,可以使用模板字段将其添加到列中,通过传递一些唯一ID来将您重定向到修改页面查询字符串中的记录。在修改页面中,您将读取查询字符串,获取id并根据id从数据库表中检索数据。
类似的东西:
你的gridview中的添加一个字段:
<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
}
}
确保在gridview中包含onrowdatabound为onrowdatabound="grdUser_RowDataBound"