在asp.net中使用GridView进行编辑功能-下拉列表

时间:2019-07-08 05:00:46

标签: javascript asp.net

通过我的模式弹出式窗口进行编辑功能,感谢您的帮助。

简介.. 我有一个用户列表。在此之前。每次要编辑用户详细信息时,将打开另一个页面,进行编辑,保存并返回到用户表列表。

我想所谓的更新页面以使用模式弹出窗口,因为要编辑的详细信息不是很多,因此需要打开另一个页面。但是我从这里的同伴那里获得了一些建议,可以在stackOverflow ..中使用GridView。.这是我的尝试..我设法编辑和删除,但下拉列表不正确..它没有选择原始值。选择第一个下拉列表。.我在GridView1_RowEditing中遇到错误。

非常感谢您的帮助。 谢谢

UserManager.aspx

<div class="row">
    <div class="col-md-12">
        <div class="table-responsive">
            <asp:GridView ID="gv" runat="server" DataKeyNames="ID" AutoGenerateColumns="False" CssClass="table table-striped table-bordered table-hover table-checkable dataTable no-footer" EmptyDataText="No users found." OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating">
                <Columns>                       
                    <asp:TemplateField HeaderText="Roles" ItemStyle-Font-Size="12px" ItemStyle-Width="200px">
                        <ItemTemplate>
                            <%# Eval("Roles") %>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:DropDownList runat="server" ID="ddlRoles" AutoPostBack="true"> 
                                <asp:ListItem Text="Supervisor" Value="10"></asp:ListItem>
                                <asp:ListItem Text="Front desk operator" Value="14"></asp:ListItem>
                                <asp:ListItem Text="Housekeeping" Value="15"></asp:ListItem>
                                <asp:ListItem Text="Finance Clerk" Value="16"></asp:ListItem>
                            </asp:DropDownList>  
                            <asp:Label runat="server" ID="lbRoleID" Text='<%# Eval("Roles") %>' Visible="false"></asp:Label>
                        </EditItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Username">
                        <ItemTemplate>
                            <%# Eval("Username") %>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Full Name" ItemStyle-Font-Size="12px">
                        <ItemTemplate>
                            <%# Eval("Name") %>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox runat="server" ID="EditName" Text='<%# Eval("Name") %>'></asp:TextBox>
                        </EditItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Contact No" ItemStyle-Font-Size="12px">
                        <ItemTemplate>
                            <%# Eval("ContactNo") %>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox runat="server" ID="EditContactNo" Text='<%# Eval("ContactNo") %>'></asp:TextBox>
                        </EditItemTemplate>
                    </asp:TemplateField>
                    <asp:CommandField ShowEditButton="true" />  
                    <asp:CommandField ShowDeleteButton="true" />
                    <asp:TemplateField>
                        <ItemTemplate>
                            <asp:LinkButton runat="server" ID="lnkResetPassword" DataKeyNames="ID" CssClass="btn dark btn-sm btn-outline sbold uppercase" OnClick="lnkResetPassword_Click" OnClientClick="if (confirm('Are you sure to reset user password?')) { showPreloader(); } else { return false; }">
                                <i class="fa fa-refresh"></i> &nbsp; Reset Password
                            </asp:LinkButton>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
        </div>
    </div>
</div>
............
............

UserManager.aspx.cs

protected void lnkResetPassword_Click(object sender, EventArgs e)
{
    GridViewRow gr = (GridViewRow)(((LinkButton)sender).NamingContainer);
    int id = Convert.ToInt32(gv.DataKeys[gr.RowIndex].Value.ToString());

    setupDB();

    sSql = "update Users set Password = HASHBYTES('SHA1', '123456') , IsFirstTime = '1' where ID = '"+ id +"'";

    db.executeNonQuery(sSql);

    disposeDB();
}

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
    GridViewRow gr = (GridViewRow)gv.Rows[e.RowIndex];
    int id = Convert.ToInt32(gv.DataKeys[gr.RowIndex].Value.ToString());

    setupDB();

    sSql = "update Users set IsActive = '0' where ID = '" + id + "'";
    db.executeNonQuery(sSql);

    disposeDB();
    LoadData();
}

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{

    Label lbRoleID = (Label)gv.Rows[e.NewEditIndex].FindControl("lbRoleID"); //lbRoleID is the ID of label
    gv.EditIndex = e.NewEditIndex;

    DropDownList ddlUserRoles = (DropDownList)gv.Rows[e.NewEditIndex].FindControl("ddlRoles");
    ddlUserRoles.Text = lbRoleID.Text;
    ddlUserRoles.DataBind();

    LoadData();
}

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    GridViewRow gr = (GridViewRow)gv.Rows[e.RowIndex];
    int id = Convert.ToInt32(gv.DataKeys[gr.RowIndex].Value.ToString());

    DropDownList editRole = (DropDownList)(gv.Rows[gv.EditIndex].Cells[0].FindControl("ddlRoles"));
    TextBox editName = (TextBox)(gv.Rows[gv.EditIndex].Cells[2].FindControl("EditName"));
    TextBox editContactNo = (TextBox)(gv.Rows[gv.EditIndex].Cells[3].FindControl("EditContactNo"));

    gv.EditIndex = -1;

    setupDB();

    sSql = "Update Users set RoleID = '" + editRole.SelectedValue + "', Name = '" + editName.Text + "', ContactNo = '" + editContactNo.Text + "' where ID = '" + id + "'";
    db.executeNonQuery(sSql);

    disposeDB();
    LoadData();
}

protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
    gv.EditIndex = -1;
    LoadData();
}

1 个答案:

答案 0 :(得分:1)

为什么可以使用gridview功能编辑行时为什么要出现模式弹出窗口。

您可以在示例链接下方签出,以在Gridview中实现行编辑。

https://www.c-sharpcorner.com/UploadFile/9f0ae2/gridview-edit-delete-and-update-in-Asp-Net/

HTML:

GridView

ArrayList of ArrayLists

下拉模板

<asp:GridView ID="gv" runat="server" DataKeyNames="ID" 
   AutoGenerateColumns="False" CssClass="table table-striped table-bordered table-hover table-checkable dataTable no-footer" 
  EmptyDataText="No users found." 
  OnRowCancelingEdit="GridView1_RowCancelingEdit" 
  OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing" 
  OnRowUpdating="GridView1_RowUpdating"
  OnRowDataBound="GridView1_RowDataBound"> //Added Row Bound Event

CS:

 <asp:TemplateField HeaderText="Roles" ItemStyle-Font-Size="12px" ItemStyle-Width="200px">
                    <ItemTemplate>
                        <asp:Label ID="lblRoles" runat="server" Text='<%# Eval("Roles") %>'></asp:Label>

                    </ItemTemplate>
                    <EditItemTemplate>

                        <asp:DropDownList runat="server" ID="ddlRoles"> 
                            <asp:ListItem Text="Supervisor" Value="10"></asp:ListItem>
                            <asp:ListItem Text="Front desk operator" Value="14"></asp:ListItem>
                            <asp:ListItem Text="Housekeeping" Value="15"></asp:ListItem>
                            <asp:ListItem Text="Finance Clerk" Value="16"></asp:ListItem>
                        </asp:DropDownList>  

                    </EditItemTemplate>
                </asp:TemplateField>