代码如下
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
string sqlStr = "delete from b where id=" + Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value) + "";
Common.ExecuteSql(sqlStr);
bind();
for (int i = 0; i < GridView1.Rows.Count; i++)
{
((LinkButton)(GridView1.Rows[i].Cells[5].Controls[0])).Attributes.Add
("onclick", "javascript:if(confirm('确定删除?')!=1){return false}");
}
} public static void ExecuteSql(string sqlStr)
{
try
{
openConnection();
comm.CommandType = CommandType.Text;
comm.CommandText = sqlStr;
comm.ExecuteNonQuery();
}
catch (Exception e)
{
throw new Exception(e.Message);
}
finally
{
closeConnection();
}
}
按理说我按删除的时候应该弹出提醒框的,为什么第一次按删除的时候不弹出提醒框,第二次以后却弹出来
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
string sqlStr = "delete from b where id=" + Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value) + "";
Common.ExecuteSql(sqlStr);
bind();
for (int i = 0; i < GridView1.Rows.Count; i++)
{
((LinkButton)(GridView1.Rows[i].Cells[5].Controls[0])).Attributes.Add
("onclick", "javascript:if(confirm('确定删除?')!=1){return false}");
}
} public static void ExecuteSql(string sqlStr)
{
try
{
openConnection();
comm.CommandType = CommandType.Text;
comm.CommandText = sqlStr;
comm.ExecuteNonQuery();
}
catch (Exception e)
{
throw new Exception(e.Message);
}
finally
{
closeConnection();
}
}
按理说我按删除的时候应该弹出提醒框的,为什么第一次按删除的时候不弹出提醒框,第二次以后却弹出来
{
string sqlStr = "delete from b where id=" + Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value) + "";
Common.ExecuteSql(sqlStr);
bind();
for (int i = 0; i < GridView1.Rows.Count; i++)
{
((LinkButton)(GridView1.Rows[i].Cells[5].Controls[0])).Attributes.Add
("onclick", "javascript:if(confirm('确定删除?')!=1){return false}");
}
}
改成protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
for (int i = 0; i < GridView1.Rows.Count; i++)
{
((LinkButton)(GridView1.Rows[i].Cells[5].Controls[0])).Attributes.Add
("onclick", "javascript:if(confirm('确定删除?')!=1){return false}");
}
string sqlStr = "delete from b where id=" + Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value) + "";
Common.ExecuteSql(sqlStr);
bind();
}
<asp:TemplateField HeaderText="删除新闻" ShowHeader="False">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CommandArgument='<%# Eval("NewsID") %>' CommandName="DelCmd" OnClientClick="return confirm('您确定要删除吗?');">删除</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="删除新闻" ShowHeader="False">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CommandArgument='<%# Eval("NewsID") %>' CommandName="DelCmd" OnClientClick="return confirm('您确定要删除吗?');">删除</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>然后写RowCommand事件,不要用RowDeleting
protected void GridView1_RowCommand(object sender, GridViewDeleteEventArgs e)
{
if(e.CommandName=="DelCmd")
{
string sqlStr = "delete from b where id=" + Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value) + "";
Common.ExecuteSql(sqlStr);
}
bind();
}
怎么了??
{
((LinkButton)(GridView1.Rows[i].Cells[5].Controls[0])).Attributes.Add
("onclick", "javascript:if(confirm('确定删除?')!=1){return false}");
}这段代码应该放在pageload里...
<%#"<a href=\"?DeleteId=" + Eval("Id") + "\" onclick=\"javascript:return confirm('您确实要永久删除吗?此操作不可恢复。')\">删除</a>"%>
前台试试这样写
后台
protected void Page_Load(object sender, EventArgs e)
{if (!Page.IsPostBack)
{
if (Request["DeleteId"] != null && int.TryParse(Request["DeleteId"], out id))
{
Delete(id); }
}
删除功能写成一个方法调用
<%#"<a href=\"?DeleteId=" + Eval("Id") + "\" onclick=\"javascript:return confirm('您确实要永久删除吗?此操作不可恢复。')\">删除</a>"%>
这个是写在前台页面上的,页面显示数据时,每一条数据的最后一列都有一个“删除”链接,当点击时,会提醒用户删除的当前这一条数据删除后不可恢复,而这个删除链接绑定的是当前数据的ID,只要页面显示了多少条数据就有属于每条数据ID,点击删除时就会显示提示当前数据删除不会恢复
protected void GridView1_RowCommand(object sender, GridViewDeleteEventArgs e)
{
if(e.CommandName=="Delete")
{
}
}
<asp:GridView ID="GridView1" runat="server" DataKeyNames="ID"
OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" OnRowCancelingEdit="GridView1_CancelingEdit"
OnRowDeleting="GridView1_RowDeleting" PageSize="15" AllowPaging="true" OnPageIndexChanging="GridView1_PageIndexChanging"
ShowHeader="true">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:Label runat="server" Text="ID"></asp:Label>
</HeaderTemplate>
<ItemTemplate>
<asp:Label runat="server" Text=‘<%#Bind("ID") %>‘ ID="Label0"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
<asp:Label runat="server" Text="姓名"></asp:Label></HeaderTemplate>
<ItemTemplate>
<asp:Label runat="server" Text=‘<%#Bind("UserName") %>‘ ID="Label2"></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Text=‘<%#Bind("UserName") %>‘ runat="server" ID="UserName"></asp:TextBox><asp:RequiredFieldValidator
runat="server" ErrorMessage="不能为空" ControlToValidate="UserName" Display="Dynamic">*</asp:RequiredFieldValidator>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
<asp:Label runat="server" Text="金额"></asp:Label>
</HeaderTemplate>
<ItemTemplate>
<asp:Label runat="server" Text=‘<%#Bind("Money") %>‘ ID="Label33"></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Text=‘<%#Bind("Money")%>‘ runat="server" ID="Money"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ErrorMessage="不能为空"
ControlToValidate="Money" Display="Dynamic">*</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ErrorMessage="整数或浮点数"
ValidationExpression="^\d*$|[1-9]\d*\.\d*|0\.\d*[1-9]\d*$" ControlToValidate="Money"
Display="Dynamic">*</asp:RegularExpressionValidator>
</EditItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowDeleteButton="True" ShowEditButton="True" HeaderText="操作" />
</Columns>
<HeaderStyle BackColor="blue" ForeColor="white" />
</asp:GridView>
后台:
string myConnectionString = ConfigurationManager.ConnectionStrings["SQLCONNECTIONSTRING"].ConnectionString;
SqlConnection myConnection = new SqlConnection();
protected void Page_Load(object sender, EventArgs e)
{
myConnection.ConnectionString = myConnectionString;
if (!IsPostBack)
{
T();
}
}
public void T()
{
myConnection.Open();
string sql = "Select * From Test";
SqlDataAdapter da = new SqlDataAdapter(sql, myConnection);
DataSet ds = new DataSet();
da.Fill(ds, "Test");
GridView1.DataSource = ds;
GridView1.DataKeyNames = new string[] { "ID" };
GridView1.DataBind();
myConnection.Close();
}
public void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
myConnection.Open();
GridViewRow row = GridView1.Rows[e.RowIndex];
int ID = int.Parse(GridView1.DataKeys[e.RowIndex].Values[0].ToString());
string userName = ((TextBox)row.FindControl("UserName")).Text.ToString();
double Money = Convert.ToDouble(((TextBox)row.FindControl("Money")).Text.ToString());
SqlDataReader dr;
string sql = "Update Test Set UserName=‘" + userName + "‘,Money=" + Money + " Where ID=" + ID + "";
SqlCommand myCommand = new SqlCommand(sql, myConnection);
dr = myCommand.ExecuteReader();
GridView1.EditIndex = -1;
myConnection.Close();
T();
}
public void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
myConnection.Open();
GridViewRow row = GridView1.Rows[e.RowIndex];
int ID = int.Parse(GridView1.DataKeys[e.RowIndex].Values[0].ToString());
SqlDataReader dr;
string sql = "Delete From Test Where ID=" + ID + "";
SqlCommand myCommand = new SqlCommand(sql, myConnection);
dr = myCommand.ExecuteReader();
GridView1.EditIndex = -1;
myConnection.Close();
T();
}
public void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
T();
}
public void GridView1_CancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
GridView1.EditIndex = -1;
T();
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
T();
}
("onclick", "return confirm('你确认删除吗?');");
放在RowDataBound事件里
不可能放在删除事件里
今天我刚处理完一个gridview应该错不了的..
((LinkButton)(GridView1.Rows[i].Cells[5].Controls[0])).Attributes.Add
("onclick", "javascript:if(confirm('确定删除?')!=1){return false}");啊参见
http://dotnet.aspx.cc/file/GridView-LinkButton-Confirm-Div.aspx
{
bind();
}大哥你好好想想,我觉得问题出在删除语句,与for循环之间
{
bind();
}
for (int i = 0; i < GridView1.Rows.Count; i++)
{
((LinkButton)(GridView1.Rows[i].Cells[5].Controls[0])).Attributes.Add
("onclick", "javascript:if(confirm('确定删除?')!=1){return false}");
}
{
string sqlStr = "delete from b where id=" + Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value) + "";
Common.ExecuteSql(sqlStr);
bind();
}protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
((LinkButton)(GridView1.Rows[i].Cells[5].Controls[0])).Attributes.Add
("onclick", "javascript:if(confirm('确定删除?')!=1){return false}"); }
}
这玩意满足不了你?????我怎么就不信呢。
我看了好几遍才明白你问的是个啥,这么多人没一下子明白你的意图,看来是你问的太深奥了!你的代码里边第一次删除之后才执行客户机代码的事件注册,所以第一次删除不会有反应!夜哥告诉你第一次改的代码也是一样的,你每次DATABIND()之后,注册是事件就没有了,因为前台的LINKBUTTON都是重新生成的,你删除之后就DATABIND却不重新注册,如果你不用夜哥告诉你的第二种写法,那你就应该把DATABIND独立出来,把要处理的内容都放到DATABIND的方法里一起处理!你每次DATABIND()之后就应该注册,你放到POSTBACK里什么的肯定是后来又DATABIND()了,所以事件才没有响应的,人家告诉你放到PAGE_LOAD里,你不好举一反三一下么大哥!
<%@ Page Language="C#" AutoEventWireup="true" EnableViewState="true" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void x_Click(object sender, EventArgs e)
{
LinkButton x = sender as LinkButton;
String sql = "delete from table where id=" + x.CommandArgument;
Response.Write(sql);
//删除完毕执行下面的代码。
//Response.Redirect(Request.Url.ToString());
} protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
System.Data.SqlClient.SqlConnection cn = new System.Data.SqlClient.SqlConnection();
cn.ConnectionString = "Data Source=(local);Initial Catalog=UserMGR;Integrated Security=True";
cn.Open();
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
cmd.CommandText = "SELECT * FROM [BaseObject]";
cmd.Connection = cn;
GridView1.DataSource = cmd.ExecuteReader();
GridView1.DataBind();
cn.Dispose();
}
} protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
LinkButton x = e.Row.FindControl("x") as LinkButton;
x.OnClientClick = "return window.confirm('你真的要删除吗?');";
}
}
</script>
<body>
<form id="form1" runat="server">
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowDataBound="GridView1_RowDataBound">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="x" runat="server" Text="删除" OnClick="x_Click" CommandArgument='<%#Eval("objectId") %>'></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</form>
</body>
</html>
<asp:TemplateField>
<HeaderTemplate>
删除</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox runat="server" ID="txtCNo" onclick="javascript:chkRow(this);" />
</ItemTemplate>
</asp:TemplateField>这是我项目中的一个删除列
/// 删除事件
function chkRow(obj){var r = obj.parentElement.parentElement.parentElement;
if(obj.checked){ r.style.backgroundColor="#FFD7EA";
if(confirm("你确信要删除 行颜色突出显示 的信息?"))
{
document.forms[0].submit();
}
else
{
obj.checked=false;
r.style.backgroundColor="";
}
}
else {if(r.rowIndex%2==1)r.style.backgroundColor="";else r.style.backgroundColor="#F5F5F5";}}
这是JS代码... 具体的你慢慢琢磨去吧...我也不知道该怎么说了...