C# “Gridview”的第一行总是被删除,而不是被选择删除的用户
我试图从我的C# “Gridview”的第一行总是被删除,而不是被选择删除的用户,c#,jquery,asp.net,C#,Jquery,Asp.net,我试图从我的GridView中删除所选用户,但当我选择用户旁边的delete按钮时,它会删除GridView的第一行,而不是所选用户 这是我的GridView: <asp:GridView ID="gvUsers" runat="server" AutoGenerateColumns="False"
GridView
中删除所选用户,但当我选择用户旁边的delete按钮时,它会删除GridView的第一行,而不是所选用户
这是我的GridView
:
<asp:GridView
ID="gvUsers"
runat="server"
AutoGenerateColumns="False"
Width="100%"
GridLines="None"
CssClass="table table-bordered table-hover">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:HiddenField ID="hdnPagesize" runat="server" />
<img id="imgPreview" class="img-rounded" style="width: 38px; height: 38px; margin-top: -10px; margin-bottom: -12px" alt="" src="" />
</ItemTemplate>
<ItemStyle Width="4%" HorizontalAlign="Center" VerticalAlign="Middle" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Name" SortExpression="Name">
<ItemTemplate>
<label id="lblFullName" style="font-weight: normal;"></label>
</ItemTemplate>
<ItemStyle CssClass="cssSearch" Width="28%" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Email">
<ItemTemplate>
<label id="lblEmail" style="font-weight: normal;"></label>
</ItemTemplate>
<ItemStyle CssClass="cssSearch" Width="24%" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Dob">
<ItemTemplate>
<label id="lblDob" style="font-weight: normal;"></label>
</ItemTemplate>
<ItemStyle Width="12%" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Status" ItemStyle-Width="7%">
<ItemTemplate>
<asp:HiddenField ID="hdnStatus" runat="server" />
<label id="lblStatus" style="font-size: 13px; font-weight: normal;"></label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Role">
<ItemTemplate>
<label id="lblRole" style="font-weight: normal;"></label>
</ItemTemplate>
<ItemStyle Width="8%" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Account" ItemStyle-Width="7%" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<label id="lblAccountStatus" style="font-weight: normal; font-size: large;"></label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Action" ItemStyle-Width="8%" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<a id="aEditUserDetails" style="cursor: pointer;">
<i class="ti-pencil-alt" style="font-size: large"></i>
</a>
<a id="aDeleteUser" style="cursor: pointer;" data-toggle="modal" data-target="#confirm-delete">
<i class="glyphicon glyphicon-trash text-danger" style="font-size: medium"></i>
</a>
<!-- BEGIN Modal Confirm -->
<div class="modal fade" id="confirm-delete" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog modal-sm">
<div class="modal-content">
<div class="modal-body">
<h4>Are you sure?</h4>
<br />
<a id="aDeleteUserModal" class="btn btn-success" data-dismiss="modal">Yes</a>
<input type="button" class="btn btn-danger" data-dismiss="modal" value="No" />
</div>
</div>
</div>
</div>
<!-- END Modal Confirm -->
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
你确定吗?
对
然后我的代码如下:
<script type="text/javascript">
var selectedPageSize = 10 /* Default size is 10. */
var currentPageIndex = 1 /* Default pageindex is 1. */
$(function () {
/* Retrieve list of users when page loads. */
GetUsers(currentPageIndex, selectedPageSize);
});
$(document).on("keyup", "[id*=txtSearch]", function () {
/* Retrieve list of users when any key is pressed in search box (txtSearch). */
GetUsers(currentPageIndex, selectedPageSize);
});
$(document).on("click", ".Pager .page", function () {
currentPageIndex = parseInt($(this).attr('page'))
GetUsers(currentPageIndex, selectedPageSize);
});
function changePagesize(obj) {
selectedPageSize = $("[id*=ddlPageSize]").val();
GetUsers(currentPageIndex, selectedPageSize);
}
function SearchKey() {
return jQuery.trim($("[id*=txtSearch]").val());
};
function GetUsers(pageIndex, pageSize) {
/* Pass parameters in array, gData.*/
var gData = [];
gData[0] = pageIndex;
gData[1] = pageSize;
gData[2] = SearchKey();
var jsonData = JSON.stringify({ gData: gData });
$.ajax({
type: "POST",
url: "users.aspx/GetUsers",
data: jsonData,
contentType: "application/json; charset=utf-8",
dataType: "json",
async: "true",
success: BindUsersList,
failure: function (response) {
},
error: function (response) {
alert(response.d);
}
});
}
var row;
function BindUsersList(response) {
var xmlDoc = $.parseXML(response.d);
var xml = $(xmlDoc);
var users = xml.find("dsUsers");
var html = '<table id="gvUsers">';
if (row == null) {
row = $("#<%=gvUsers.ClientID %> tr:last-child").clone(true);
}
$("#<%=gvUsers.ClientID %> tr").not($("#<%=gvUsers.ClientID %> tr:first-child")).remove();
html += $("#<%=gvUsers.ClientID %>").html();
if (users.length > 0) {
$.each(users, function () {
html += "<tr>";
$(row).find("[id*=imgPreview]").attr("src", "../imageHandler.ashx?user_id_pk=" + $(this).find("user_id_pk").text() + "");
$(row).find("[id*=lblFullName]").html($(this).find("FullName").text());
$(row).find("[id*=lblEmail]").html($(this).find("email").text());
$(row).find("[id*=lblDob]").html($(this).find("dob").text());
if ($(this).find("user_status").text() == "true") {
$(row).find("[id*=lblStatus]").html("Active");
$(row).find("[id*=lblStatus]").attr("class", "label label-success label-transparent");
}
else {
$(row).find("[id*=lblStatus]").html("Inactive");
$(row).find("[id*=lblStatus]").attr("class", "label label-danger label-transparent");
}
if ($(this).find("accountStatus").text() == "locked") {
$(row).find("[id*=lblAccountStatus]").attr("class", "ti-lock text-danger");
$(row).find("[id*=lblAccountStatus]").attr("data-toggle", "tooltip");
$(row).find("[id*=lblAccountStatus]").attr("data-placement", "left");
$(row).find("[id*=lblAccountStatus]").attr("title", "Account locked due to invalid login attempts.");
}
else {
$(row).find("[id*=lblAccountStatus]").attr("class", "ti-unlock text-success");
}
$(row).find("[id*=lblRole]").html($(this).find("user_role").text());
$(row).find("[id*=aEditUserDetails]").attr("data-user-id", $(this).find("user_id_pk").text());
$(row).find("[id*=aEditUserDetails]").attr("title", "Edit User Details");
$(row).find("[id*=aDeleteUserModal]").attr("data-user-id", $(this).find("user_id_pk").text());
$("#<%=gvUsers.ClientID %>").append(row);
row = $("#<%=gvUsers.ClientID %> tr:last-child").clone(true);
html += $(row).html();
html += "</tr>";
});
var pager = xml.find("dtPager");
$("[id*=divPager]").gvPager({
ActiveCssClass: "current",
PagerCssClass: "pager",
PageIndex: parseInt(pager.find("PageIndex").text()),
PageSize: parseInt(pager.find("PageSize").text()),
RecordCount: parseInt(pager.find("RecordCount").text())
});
$(".cssSearch").each(function () {
var searchPattern = new RegExp('(' + SearchKey() + ')', 'ig');
$(this).html($(this).text().replace(searchPattern, "<span class = 'highlight'>" + SearchKey() + "</span>"));
});
} else {
var empty_row = row.clone(true);
$("td:first-child", empty_row).attr("colspan", $("td", row).length);
$("td:first-child", empty_row).attr("align", "center");
$("td:first-child", empty_row).html("No Data Available.");
$("td", empty_row).not($("td:first-child", empty_row)).remove();
$("#<%=gvUsers.ClientID %>").append(empty_row);
}
html += '</table>';
};
/* Edit user details. */
$("[id*=aEditUser]").click(function () {
$.ajax({
type: "POST",
url: "users.aspx/EditUser",
data: '{userId: ' + $(this).data('user-id') + '}',
contentType: "application/json; charset=utf-8",
datatype: "json",
async: "true",
success: function (response) {
location.href = "newuser.aspx?uid=" + response.d;
},
error: function (response) {
Notification(response.status + ' ' + response.statusText, 'Error', 'error');
}
});
});
/* Delete user. */
$("[id*=aDeleteUserModal]").click(function () {
//var ans = confirm("Are you sure?");
//if (ans == true) {
$.ajax({
type: "POST",
url: "users.aspx/DeleteUser",
data: '{userId: ' + $(this).data('user-id') + '}',
contentType: "application/json; charset=utf-8",
datatype: "json",
async: "true",
success: function (response) {
if (response.d == 'DeletePermissionDenied') {
Notification('This feature is disabled in demo version.', 'Permission Denied', 'error');
//Notification('You dont have the permission to delete the data, contact your administrator.', 'Permission Denied', 'error');
}
else if (response.d == 'Success') {
GetUsers(currentPageIndex, selectedPageSize);
Notification('User deleted successfully.', 'Success', 'success');
}
},
error: function (response) {
Notification(response.status + ' ' + response.statusText, 'Error', 'error');
}
});
//}
});
</script>
var selectedPageSize=10/*默认大小为10*/
var currentPageIndex=1/*默认pageindex为1*/
$(函数(){
/*在页面加载时检索用户列表*/
GetUsers(currentPageIndex,selectedPageSize);
});
$(document).on(“keyup”,“[id*=txtSearch]”,函数(){
/*在搜索框(txtSearch)中按任意键时检索用户列表*/
GetUsers(currentPageIndex,selectedPageSize);
});
$(document).on(“click”,“.Pager.page”,函数(){
currentPageIndex=parseInt($(this).attr('page'))
GetUsers(currentPageIndex,selectedPageSize);
});
函数更改页面大小(obj){
selectedPageSize=$(“[id*=ddlPageSize]”)。val();
GetUsers(currentPageIndex,selectedPageSize);
}
函数SearchKey(){
返回jQuery.trim($(“[id*=txtSearch]”)和.val();
};
函数GetUsers(页面索引、页面大小){
/*在数组中传递参数,gData*/
var-gData=[];
gData[0]=页面索引;
gData[1]=页面大小;
gData[2]=SearchKey();
var jsonData=JSON.stringify({gData:gData});
$.ajax({
类型:“POST”,
url:“users.aspx/GetUsers”,
资料来源:jsonData,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
异步:“真”,
成功:BindUsersList,
故障:功能(响应){
},
错误:函数(响应){
警报(response.d);
}
});
}
var行;
函数BindUsersList(响应){
var xmlDoc=$.parseXML(response.d);
var xml=$(xmlDoc);
var users=xml.find(“dsUsers”);
var html='';
if(行==null){
row=$(“#tr:最后一个孩子”).clone(true);
}
$(“#tr”)。不是($(“#tr:第一个孩子”)。删除();
html+=$(“#”)html();
如果(users.length>0){
$.each(用户、函数(){
html+=“”;
$(行).find(“[id*=imgPreview]”).attr(“src”,”./imageHandler.ashx?user\u id\u pk=“+$(this).find(“user\u id\u pk”).text()+”;
$(row.find(“[id*=lblFullName]”)html($(this.find(“FullName”).text());
$(row.find(“[id*=lblEmail]”)html($(this.find(“email”).text());
$(row.find(“[id*=lblDob]”)html($(this.find(“dob”).text());
if($(this).find(“用户状态”).text()=“true”){
$(行).find(“[id*=lblStatus]”)html(“活动”);
private void BindUsersRow()
{
DataTable dtUsers = new DataTable();
dtUsers.Columns.Add("user_id_pk");
dtUsers.Columns.Add("FullName");
dtUsers.Columns.Add("email");
dtUsers.Columns.Add("dob");
dtUsers.Columns.Add("accountStatus");
dtUsers.Columns.Add("user_role");
dtUsers.Columns.Add("user_status");
dtUsers.Rows.Add();
gvUsers.DataSource = dtUsers;
gvUsers.DataBind();
//gvUsers.UseAccessibleHeader = true;
//gvUsers.HeaderRow.TableSection = TableRowSection.TableHeader;
}
[WebMethod]
public static string GetUsers(List<string> gData)
{
string query = "sp_um_getUsersList";
SqlCommand cmd = new SqlCommand(query);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@searchKey", gData[2]);
cmd.Parameters.AddWithValue("@PageIndex", gData[0]);
cmd.Parameters.AddWithValue("@PageSize", gData[1]);
cmd.Parameters.AddWithValue("@userStatus", strUserStatus);
cmd.Parameters.Add("@RecordCount", SqlDbType.Int, 4).Direction = ParameterDirection.Output;
return GetData(cmd, int.Parse(gData[0]), int.Parse(gData[1])).GetXml();
}
private static DataSet GetData(SqlCommand cmd, int pageIndex, int pageSize)
{
string strConnString = ConfigurationManager.ConnectionStrings["CONN"].ConnectionString;
using (SqlConnection con = new SqlConnection(strConnString))
{
using (SqlDataAdapter sda = new SqlDataAdapter())
{
cmd.Connection = con;
sda.SelectCommand = cmd;
using (DataSet ds = new DataSet())
{
sda.Fill(ds, "dsUsers");
DataTable dt = new DataTable("dtPager");
dt.Columns.Add("PageIndex");
dt.Columns.Add("PageSize");
dt.Columns.Add("RecordCount");
dt.Rows.Add();
dt.Rows[0]["PageIndex"] = pageIndex;
dt.Rows[0]["PageSize"] = pageSize;
dt.Rows[0]["RecordCount"] = cmd.Parameters["@RecordCount"].Value;
ds.Tables.Add(dt);
return ds;
}
}
}
}
[WebMethod]
public static string EditUser(int userId)
{
string str = HttpUtility.UrlEncode(DataControl.Encrypt(userId.ToString()));
return str;
}
[WebMethod]
public static string DeleteUser(int userId)
{
string result = "";
if (isDeletePermission.Equals(false))
{
result = "DeletePermissionDenied";
}
else
{
string strQuery = "EXEC sp_um_deleteUser " + userId + "," + int.Parse(HttpContext.Current.Session["UserId"].ToString()) + "";
bool isResult = DataControl.ExecuteNonQuery(strQuery);
if (isResult.Equals(true))
{
result = "Success";
}
else
{
result = "Error";
}
}
return result;
}
var row;
function BindUsersList(response) {
var xmlDoc = $.parseXML(response.d);
var xml = $(xmlDoc);
var users = xml.find("dsUsers");
var html = '<table id="gvUsers">';
row = $("#<%=gvUsers.ClientID %> tr:last-child").clone(true);
[...]
/* Edit user details. */
$("[id*=aEditUser]").click(function () {
var idUser = $(this).data('user-id');
$.ajax({
type: "POST",
url: "users.aspx/EditUser",
data: '{userId: ' + idUser + '}',
contentType: "application/json; charset=utf-8",
datatype: "json",
async: "true",
success: function (response) {
location.href = "newuser.aspx?uid=" + response.d;
},
error: function (response) {
Notification(response.status + ' ' + response.statusText, 'Error', 'error');
}
});
});