protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
string cartid;
string cartadd="";
if (GridView1.DataKeys.Count == 0)
cartid = "";
else if (GridView1.DataKeys.Count > e.RowIndex)
cartid = Convert.ToString(GridView1.DataKeys[e.RowIndex].Values[0]);
Label1.Text = cartid;
string[] idcategory=Request.Cookies["qyidcookie1"].Value.Split('|');
foreach (string i in idcategory)
{
if (i == cartid)
{
continue;
}
else
{
cartadd += i + "|";
}
}
HttpCookie qyidcookie = new HttpCookie("qyidcookie1");
qyidcookie.Value =cartadd;
DateTime time = DateTime.Now;
TimeSpan tspan = new TimeSpan(0, 0, 0, 45000);
qyidcookie.Expires = time.Add(tspan);
Response.Cookies.Add(qyidcookie);
}
刚才一兴奋就结贴了。目前依然有问题,删除其余记录都没问题,就是不能删除第一个,如果删除第一条记录刷新页面还是会一条条不断的删除记录
{
string cartid;
string cartadd="";
if (GridView1.DataKeys.Count == 0)
cartid = "";
else if (GridView1.DataKeys.Count > e.RowIndex)
cartid = Convert.ToString(GridView1.DataKeys[e.RowIndex].Values[0]);
Label1.Text = cartid;
string[] idcategory=Request.Cookies["qyidcookie1"].Value.Split('|');
foreach (string i in idcategory)
{
if (i == cartid)
{
continue;
}
else
{
cartadd += i + "|";
}
}
HttpCookie qyidcookie = new HttpCookie("qyidcookie1");
qyidcookie.Value =cartadd;
DateTime time = DateTime.Now;
TimeSpan tspan = new TimeSpan(0, 0, 0, 45000);
qyidcookie.Expires = time.Add(tspan);
Response.Cookies.Add(qyidcookie);
}
刚才一兴奋就结贴了。目前依然有问题,删除其余记录都没问题,就是不能删除第一个,如果删除第一条记录刷新页面还是会一条条不断的删除记录
解决方案 »
- 求 jmail收邮件的成功列子,包括jmail版本
- .net 里面能申明一个返回List<string>的函数不?
- ASP.NET使用存储过程与函数的相关联的问题
- 怎样让带有AutoPostBack="True"和onpropertychange属性的TextBox不影响button控件的JS代码?
- 和表绑定的项怎么表示?在线等!!!
- |M| 回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/>
- 问题还没有解决.????重发贴,,,在线等.
- Response.WriteFile方法如何输出.SWF文件???
- .net读取上传apk文件的包名、软件名称、logo
- 两个窗口之间共享数据的问题
- 求一个最佳解决方案
- Js 调用 WebService问题...
我天天都能见到口口啊呵呵
这个是上午发的帖子
GridView中删除一条记录大致有两种方式,
1.系统自动提供的非模板列
2.自己添加模板列,如以下就是自己添加的模板列!
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="Delete"
onclientclick="return confirm('确要删除吗?')">删除</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
就可以了!
<asp:CommandField ShowDeleteButton="True" HeaderText="删除"
DeleteText="<div id="de" onclick="JavaScript:return confirm('确定删除吗?')">删除</div>" >
<HeaderStyle BorderStyle="None" />
<ItemStyle Height="35px" HorizontalAlign="Center" Width="60px" BorderStyle="None" />
</asp:CommandField>
我用的这样的方法,判断后就有那个问题了……
<asp:LinkButton ID="LinkButton2" runat="server" CommandName="delete" CausesValidation="False" OnClientClick="return confirm('确认要删除吗?');">删除</asp:LinkButton>
protected void gv_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
int id=Convert.ToInt32(gv.DataKeys[e.RowIndex].Value.);
BindData();
}
或转动页面
/// 弹出确认框是否删除
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GdView_Bind_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate)
{
((LinkButton)e.Row.Cells[3].Controls[0]).Attributes.Add("onclick", "javascript:return confirm('你确认要删除:\"" + e.Row.Cells[1].Text + "\"吗?')");
}
}
}
来操作 相应的删除方法
一般的代码是:
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
string id = GridView1.DataKeys[e.RowIndex].Value.ToString();//刷新页面这个id是不会变的
//删除操作
//绑定数据
}
我试了试还是不能删除 protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
string cartid="";
string cartadd="";
if (GridView1.DataKeys.Count == 0)
cartid = "";
else if (GridView1.DataKeys.Count > e.RowIndex)
cartid = GridView1.DataKeys[e.RowIndex].Value.ToString();
// cartid = Convert.ToString(GridView1.DataKeys[e.RowIndex].Values[0]);
Label1.Text = cartid;
string[] idcategory=Request.Cookies["qyidcookie1"].Value.Split('|');
foreach (string i in idcategory)
{
if (i == cartid)
{
continue;
}
else
{
cartadd += i + "|";
}
}
HttpCookie qyidcookie = new HttpCookie("qyidcookie1");
qyidcookie.Value =cartadd;
DateTime time = DateTime.Now;
TimeSpan tspan = new TimeSpan(0, 0, 0, 45000);
qyidcookie.Expires = time.Add(tspan);
Response.Cookies.Add(qyidcookie);
} - -
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
string id = GridView1.DataKeys[e.RowIndex].Value.ToString();
//这里调试,看获得了id不??
}
所以每次刷新都能看到ID变啊变的,直到变成了Label,挺郁闷的
以这种方式获得的id刷新应该是不会变的!!
string id = GridView1.DataKeys[e.RowIndex].Value.ToString();
是啊,所以我进行了下一步,但是只要加上 string[] idcategory = Request.Cookies["qyidcookie1"].Value.Split('|');
foreach (string i in idcategory)
{
if (i == cartid)
{
continue;
}
else
{
cartadd += i + "|";
}
}
HttpCookie qyidcookie = new HttpCookie("qyidcookie1");
qyidcookie.Value = cartadd;
DateTime time = DateTime.Now;
TimeSpan tspan = new TimeSpan(0, 0, 0, 45000);
qyidcookie.Expires = time.Add(tspan);
Response.Cookies.Add(qyidcookie);删除这段问题就随之而来了,除了删除第一项外其余的都正常。删除其他项不管怎么刷新都没问题,可是就是删除第一项后,就开始逐个的还是按照顺序的一个一个的删除了,刷新一下,删除一条……。“居然成了半自动化了- -”
if (GridView1.DataKeys.Count == 0)
cartid = "";
else if (GridView1.DataKeys.Count > e.RowIndex)
cartid = GridView1.DataKeys[e.RowIndex].Value.ToString();
string[] idcategory=Request.Cookies["qyidcookie1"].Value.Split('|');
foreach (string i in idcategory)
{
if (i == cartid)
{
continue;
}
else
{
cartadd += i + "|";
}
}
HttpCookie qyidcookie = new HttpCookie("qyidcookie1");
qyidcookie.Value =cartadd;你这段代码想实现什么功能
--------------------------------------------------------------------------------问题可能就在这里。
foreach (string i in idcategory)
{
if (i == cartid)
{
continue;
}
else
{
cartadd += i + "|";
}
}
HttpCookie qyidcookie = new HttpCookie("qyidcookie1");
qyidcookie.Value =cartadd;这个就是遍历筛选的代码,我又看来两遍,没看出来错误在什么地方……
string[] idcategory=Request.Cookies["qyidcookie1"].Value.Split('|');
foreach (string i in idcategory)
{
if (i == cartid)
{
continue;
}
else
{
cartadd += i + "|";
}
}...qyidcookie.Value = cartadd;...=>
string idcategory="|"+(Request.Cookies["qyidcookie1"].Value??"")+"|";idcategory=idcategory.Replace("|"+cartid+"|","|");
qyidcookie.Value = idcategory;
string cartadd="";
if (GridView1.DataKeys.Count == 0)
cartid = "";
else if (GridView1.DataKeys.Count > e.RowIndex)
cartid = GridView1.DataKeys[e.RowIndex].Value.ToString();
Label1.Text = cartid;
HttpCookie qyidcookie = new HttpCookie("qyidcookie1");
string idcategory = "|" + (Request.Cookies["qyidcookie1"].Value ?? "") + "|";
idcategory = idcategory.Replace("|" + cartid + "|", "|");
qyidcookie.Value = idcategory;
DateTime time = DateTime.Now;
TimeSpan tspan = new TimeSpan(0, 0, 0, 45000);
qyidcookie.Expires = time.Add(tspan);
Response.Cookies.Add(qyidcookie);这样会从当前ID开始一直删除到最后一条,但是当前所选ID之前的记录还都保留。
cartid = "";
else if (GridView1.DataKeys.Count > e.RowIndex)
cartid = GridView1.DataKeys[e.RowIndex].Value.ToString();
--------------------------------------------------------------------------
刷新删除的原因 和你这段获取当前行的主键 有关系e.RowIndex 可能没变,但你删除后 GridView 的行数会减少 而相对的你之前选择的行已删除 所以获取的 DataKeys[e.RowIndex] 会是删除行的下一行
没有绑定啊,请问要如何绑定DataKeys呢?那要如何阻止DataKeys[e.RowIndex]删除下一行呢?
Width="740px" onrowdeleting="GridView1_RowDeleting">
<RowStyle BackColor="#FEFCE9" />
<Columns>
<asp:BoundField DataField="book_id" HeaderText="id" Visible="False" />
<asp:BoundField HeaderText=" ">
<HeaderStyle Width="15px" BorderStyle="None" />
<ItemStyle Width="20px" BorderStyle="None" />
</asp:BoundField>
<asp:BoundField DataField="min_type" HeaderText="类别" >
<HeaderStyle BorderStyle="None" HorizontalAlign="Left" />
<ItemStyle Height="35px" HorizontalAlign="Left" Width="100px"
BorderStyle="None" />
</asp:BoundField>
<asp:HyperLinkField DataNavigateUrlFields="book_id"
DataNavigateUrlFormatString="~/book_look.aspx?id={0}" DataTextField="book_name"
HeaderText="书名">
<HeaderStyle BorderStyle="None" HorizontalAlign="Left" />
<ItemStyle BorderStyle="None" Height="35px" HorizontalAlign="Left"
Width="380px" />
</asp:HyperLinkField>
<asp:BoundField DataField="writer_info" HeaderText="作者" >
<HeaderStyle BorderStyle="None" HorizontalAlign="Left" />
<ItemStyle Height="35px" HorizontalAlign="Left" Width="130px"
BorderStyle="None" />
</asp:BoundField>
<asp:BoundField DataField="book_price" HeaderText="单价" >
<HeaderStyle BorderStyle="None" />
<ItemStyle Height="35px" HorizontalAlign="Right" Width="50px"
BorderStyle="None" />
</asp:BoundField>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="Delete"
onclientclick="return confirm('确要删除吗?')">删除</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<HeaderStyle BackColor="#EAB96F" Font-Size="10pt" ForeColor="#333333"
Height="24px" />
<AlternatingRowStyle BackColor="#E8F0E1" />
</asp:GridView>
CS显示部分
SqlConnection conn = new SqlConnection("server=(local);database=qy;uid=sa;pwd=");
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = Request.Cookies["qyidcookie1"].Value;
DataTable tableSource = null;
if (Request.Cookies["qyidcookie1"] != null)
{
string[] idcategory = Request.Cookies["qyidcookie1"].Value.Split('|');
foreach (string i in idcategory)
{
string display = "select book_id,book_name,writer_info,min_type,book_price from book_info where book_id = " + "'" + i + "'";
SqlDataAdapter sda = new SqlDataAdapter(display, conn);
DataSet ds = new DataSet();
sda.Fill(ds);
if (tableSource == null)
{
tableSource = ds.Tables[0];
}
else
{
tableSource.Merge(ds.Tables[0]);
}
}
GridView1.DataSource = tableSource;
GridView1.DataKeyNames = new string[] { "book_id" };
GridView1.DataBind();
}
else
{
Response.Write("<script>alert('你的购物车中没有商品,请选购后在查看!'); target='_blank'; </script>");
}
}
<script>
function customConfirm(val)
{
if(confirm('确要删除吗?'))
{
document.getElementById('hid').value=val;
return true;
}
else
{
return false;
}
}
</script>
-----------------------------------------------------------
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="Delete"
onclientclick="return confirm('确要删除吗?')">删除</asp:LinkButton>=>
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="Delete"
onclientclick=return customConfirm('<%#Eval("book_id")%>') >删除</asp:LinkButton>
string cartid="";
string cartadd="";
if (GridView1.DataKeys.Count == 0)
cartid = "";
else if (GridView1.DataKeys.Count > e.RowIndex)
cartid = GridView1.DataKeys[e.RowIndex].Value.ToString();
Label1.Text = cartid;
=>
string cartid=Request.Form["hName"]??"";
Label1.Text = cartid;
如何这样就判断不了cookie了吧?
onclientclick=return customConfirm('<%#Eval("book_id")%>') >删除</asp:LinkButton>
这样写会报错,这样写可以吧
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="Delete"
onclientclick=return customConfirm=<%#Eval("book_id")%> >删除</asp:LinkButton>我都加进去了,不过现在失去了确认功能,并且不删除了。
行 119: <asp:TemplateField>
行 120: <ItemTemplate>
行 121: <asp:LinkButton ID="LinkButton1" runat="server" CommandName="Delete"
行 122: onclientclick=return customConfirm('<%#Eval("book_id")%>') >删除</asp:LinkButton>
customConfirm=('<%#Eval("book_id")%>')但是这样也不好用,没有选择提示也不删除
OnClientClick=<%# string.Format("return customConfirm('{0}');",Eval("book_id"))%>
<script>
function customConfirm(val)
{
if(confirm('确要删除吗?'))
{
document.getElementById('hid').value=val;
return true;
}
else
{
return false;
}
}
</script>
始终没有执行,一直没有确认对话框
foreach (string i in idcategory)
{
if (i == cartid)
{
continue;
}
else
{
cartadd += i+"|";
}
}
HttpCookie qyidcookie = new HttpCookie("qyidcookie1");
qyidcookie.Value = cartadd;
DateTime time = DateTime.Now;
TimeSpan tspan = new TimeSpan(0, 0, 0, 45000);
qyidcookie.Expires = time.Add(tspan);
Response.Cookies.Add(qyidcookie);这个我也改了很久了,不过都会保留一个|并且cookie的保留时间不是45000分钟
在加40分,希望你能在帮我看看呵呵
这样当删除到剩余一条事右侧的|也被删除了只剩下ID,当在添加后就会把这个数字与新添加的ID写在一起了
比如剩余22
新添加 34|
等于 2234|
{
bookid = Request.QueryString["ID"];
}
protected void shoppingcart_click(object sender, EventArgs e)
{
HttpCookie qyidcookie = new HttpCookie("qyidcookie1");
if (Request.Cookies["qyidcookie1"] == null)
{
qyidcookie.Value = bookid + "|";
DateTime time = DateTime.Now;
TimeSpan tspan = new TimeSpan(0, 0, 0, 45000);
qyidcookie.Expires = time.Add(tspan);
Response.Cookies.Add(qyidcookie);
}
else
{
qyidcookie.Value = Request.Cookies["qyidcookie1"].Value + bookid + "|";
DateTime time = DateTime.Now;
TimeSpan tspan = new TimeSpan(0, 0, 0, 45000);
qyidcookie.Expires = time.Add(tspan);
Response.Cookies.Add(qyidcookie);
}
Response.Write("<script>alert('添加成功!')</script>");
}
string idcategory="|"+(Request.Cookies["qyidcookie1"].Value??"").TrimStart('|');idcategory=idcategory.Replace("|"+cartid+"|","|");qyidcookie.Value = idcategory.TrimStart('|');
这个嗷嗷好用,谢谢!请问我的cookie设置时间写错了吗?为什么设置不了呢?
TimeSpan tspan = new TimeSpan(0, 0, 0, 45000);
qyidcookie.Expires = time.Add(tspan);
=>
qyidcookie.Expires = DateTime.Now.AddMinutes(45);//45分钟