通过我的模式弹出式窗口进行编辑功能,感谢您的帮助。
简介.. 我有一个用户列表。在此之前。每次要编辑用户详细信息时,将打开另一个页面,进行编辑,保存并返回到用户表列表。
我想所谓的更新页面以使用模式弹出窗口,因为要编辑的详细信息不是很多,因此需要打开另一个页面。但是我从这里的同伴那里获得了一些建议,可以在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> 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();
}
答案 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>