Gridview编辑部分

时间:2014-12-24 13:13:33

标签: c# asp.net gridview

我有一个Gridview,当用户点击任何一行时,它应该将用户带到页面中提到的现有数据的编辑页面。

所以,我的问题是

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

  2. 如何在新页面中为相应的用户提供现有数据。

  3. 请参阅我的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>
    

    让我知道为了实现这一目标可以做些什么。我已经写了更新代码。只需要帮助解决上述两件事。

1 个答案:

答案 0 :(得分:1)

您的问题的答案:

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

    Ans。不,你真的不需要一个单独的页面进行编辑,你可以做的是在一个额外的列中给出一个命令按钮说编辑,点击它可以启用文本框绑定在同一页面中显示您的数据。

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

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

  3. 类似的东西:

    你的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"