请问在GridView里在RowCommand()写事件,下一页为什么会报错???

liufenfen 2009-11-28 07:45:03
用GridView显示数据,里面有删除,在模板里放的ImageButton删除,在RowCommand()里触发事件,为什么当点击下一页的时候,事件也会被激发,我在gvRoomType_PageIndexChanging()事件里也设置了GridView的页索引等于当前页,怎么解决这一问题,直接激发删除事件???
...全文
156 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Adechen 2009-11-29
  • 打赏
  • 举报
回复
有没有重新绑定
ccc0009 2009-11-29
  • 打赏
  • 举报
回复
if(!IsPostBack){
绑定
}
wg0332 2009-11-29
  • 打赏
  • 举报
回复
是不是load 事件里面 if(!IsPostBack){bind();}
teerhu 2009-11-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zhoukang0916 的回复:]
PageIndexChanging //分页之前的事件

C# code<asp:GridView ID="GridView1" ShowFooter="false" BorderColor="Black" OnRowDataBound="GridView1_RowDataBound" runat="server" AutoGenerateColumns="False" Font-Size="12px" Width="549px" AllowPaging="True"><Columns><asp:BoundField DataField="ID" HeaderText="编号"/><asp:BoundField DataField="EmpID" HeaderText="账号"/><asp:BoundField DataField="EmpRealName" HeaderText="姓名"/><asp:BoundField DataField="EmpSex" HeaderText="性别"/><asp:BoundField DataField="EmpAddress" HeaderText="住址"/><asp:BoundField DataField="EmpZipCode" HeaderText="邮编"/><asp:BoundField DataField="EmpBirthday" HeaderText="生日" DataFormatString="{0:yyyy-MM-dd}" HtmlEncode="False"/><asp:BoundField DataField="EmpSalary" HeaderText="薪水" DataFormatString="{0:c}" HtmlEncode="False"/></Columns><HeaderStyle BackColor="Azure" Font-Size="12px" HorizontalAlign="Center"/><RowStyle HorizontalAlign="Center"/><PagerStyle HorizontalAlign="Center" BackColor="#FFFFCC" BorderStyle="None" BorderWidth="0px" ForeColor="#330099"/><PagerSettings Visible="False"/></asp:GridView><br/><asp:LinkButton ID="lnkbtnFrist" runat="server" OnClick="lnkbtnFrist_Click">首页</asp:LinkButton><asp:LinkButton ID="lnkbtnPre" runat="server" OnClick="lnkbtnPre_Click">上一页</asp:LinkButton><asp:Label ID="lblCurrentPage" runat="server"></asp:Label><asp:LinkButton ID="lnkbtnNext" runat="server" OnClick="lnkbtnNext_Click">下一页</asp:LinkButton><asp:LinkButton ID="lnkbtnLast" runat="server" OnClick="lnkbtnLast_Click">尾页</asp:LinkButton>
跳转到第<asp:DropDownList ID="ddlCurrentPage" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"></asp:DropDownList>页


C# codeprotectedvoid Page_Load(object sender, EventArgs e)
{if (!IsPostBack)
{
bind();
}
}///<summary>/// 绑定数据///</summary>publicvoid bind()
{string sqlStr="select * from Employee";
DataSet myds= Common.dataSet(sqlStr);
GridView1.DataSource= myds;
GridView1.DataKeyNames=newstring[] {"ID" };
GridView1.DataBind();this.ddlCurrentPage.Items.Clear();for (int i=1; i<=this.GridView1.PageCount; i++)
{this.ddlCurrentPage.Items.Add(i.ToString());
}this.ddlCurrentPage.SelectedIndex=this.GridView1.PageIndex;
}///<summary>/// 在 GridView 控件中的某个行被绑定到一个数据记录时发生。此事件通常用于在某个行被绑定到数据时修改该行的内容。///</summary>///<param name="sender"></param>///<param name="e"></param>protectedvoid GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{this.lblCurrentPage.Text=string.Format("当前第{0}页/总共{1}页",this.GridView1.PageIndex+1,this.GridView1.PageCount);//遍历所有行设置边框样式foreach (TableCell tcin e.Row.Cells)
{
tc.Attributes["style"]="border-color:Black";
}//用索引来取得编号if (e.Row.RowIndex!=-1)
{int id= GridView1.PageIndex* GridView1.PageSize+ e.Row.RowIndex+1;
e.Row.Cells[0].Text= id.ToString();
}

}///<summary>/// 重新绑定///</summary>///<param name="sender"></param>///<param name="e"></param>protectedvoid DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{this.GridView1.PageIndex=this.ddlCurrentPage.SelectedIndex;
bind();
}protectedvoid lnkbtnFrist_Click(object sender, EventArgs e)
{this.GridView1.PageIndex=0;
bind();
}protectedvoid lnkbtnPre_Click(object sender, EventArgs e)
{if (this.GridView1.PageIndex>0)
{this.GridView1.PageIndex=this.GridView1.PageIndex-1;
bind();
}
}protectedvoid lnkbtnNext_Click(object sender, EventArgs e)
{if (this.GridView1.PageIndex<this.GridView1.PageCount)
{this.GridView1.PageIndex=this.GridView1.PageIndex+1;
bind();
}
}protectedvoid lnkbtnLast_Click(object sender, EventArgs e)
{this.GridView1.PageIndex=this.GridView1.PageCount;
bind();
}



[/Quote]
up
cuike519 2009-11-28
  • 打赏
  • 举报
回复
应该有个参数好像叫CommandName吧。。。
wuyq11 2009-11-28
  • 打赏
  • 举报
回复
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
this.GridView1.PageIndex = e.NewPageIndex;
BindData();
}
或使用分页控件aspnetpager



wuyq11 2009-11-28
  • 打赏
  • 举报
回复
protected void gv_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
try
{
int id=int.Parse(gv.DataKeys[e.RowIndex].Value.ToString());
}
catch
{

}
BindData();
}
自定义分页
if(!IsPostBack)
{BindData();
}
PandaIT 2009-11-28
  • 打赏
  • 举报
回复
PageIndexChanging //分页之前的事件

 <asp:GridView ID="GridView1" ShowFooter="false" BorderColor="Black" OnRowDataBound="GridView1_RowDataBound"  runat="server" AutoGenerateColumns="False"  Font-Size="12px" Width="549px"  AllowPaging="True" >
<Columns>
<asp:BoundField DataField="ID" HeaderText="编号" />
<asp:BoundField DataField="EmpID" HeaderText="账号" />
<asp:BoundField DataField="EmpRealName" HeaderText="姓名" />
<asp:BoundField DataField="EmpSex" HeaderText="性别" />
<asp:BoundField DataField="EmpAddress" HeaderText="住址" />
<asp:BoundField DataField="EmpZipCode" HeaderText="邮编" />
<asp:BoundField DataField="EmpBirthday" HeaderText="生日" DataFormatString="{0:yyyy-MM-dd}" HtmlEncode="False" />
<asp:BoundField DataField="EmpSalary" HeaderText="薪水" DataFormatString="{0:c}" HtmlEncode="False" />
</Columns>
<HeaderStyle BackColor="Azure" Font-Size="12px" HorizontalAlign="Center" />
<RowStyle HorizontalAlign="Center" />
<PagerStyle HorizontalAlign="Center" BackColor="#FFFFCC" BorderStyle="None" BorderWidth="0px" ForeColor="#330099" />
<PagerSettings Visible="False" />
</asp:GridView>
<br />
<asp:LinkButton ID="lnkbtnFrist" runat="server" OnClick="lnkbtnFrist_Click">首页</asp:LinkButton>
<asp:LinkButton ID="lnkbtnPre" runat="server" OnClick="lnkbtnPre_Click">上一页</asp:LinkButton>
<asp:Label ID="lblCurrentPage" runat="server"></asp:Label>
<asp:LinkButton ID="lnkbtnNext" runat="server" OnClick="lnkbtnNext_Click">下一页</asp:LinkButton>
<asp:LinkButton ID="lnkbtnLast" runat="server" OnClick="lnkbtnLast_Click">尾页</asp:LinkButton>
跳转到第<asp:DropDownList ID="ddlCurrentPage" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
</asp:DropDownList>页



protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
bind();
}
}
/// <summary>
/// 绑定数据
/// </summary>
public void bind()
{
string sqlStr = "select * from Employee";
DataSet myds = Common.dataSet(sqlStr);
GridView1.DataSource = myds;
GridView1.DataKeyNames = new string[] { "ID" };
GridView1.DataBind();
this.ddlCurrentPage.Items.Clear();
for (int i = 1; i <= this.GridView1.PageCount; i++)
{
this.ddlCurrentPage.Items.Add(i.ToString());
}
this.ddlCurrentPage.SelectedIndex = this.GridView1.PageIndex;
}
/// <summary>
/// 在 GridView 控件中的某个行被绑定到一个数据记录时发生。此事件通常用于在某个行被绑定到数据时修改该行的内容。
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
this.lblCurrentPage.Text = string.Format("当前第{0}页/总共{1}页", this.GridView1.PageIndex + 1, this.GridView1.PageCount);

//遍历所有行设置边框样式
foreach (TableCell tc in e.Row.Cells)
{
tc.Attributes["style"] = "border-color:Black";
}
//用索引来取得编号
if (e.Row.RowIndex != -1)
{
int id = GridView1.PageIndex * GridView1.PageSize + e.Row.RowIndex + 1;
e.Row.Cells[0].Text = id.ToString();
}

}
/// <summary>
/// 重新绑定
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
this.GridView1.PageIndex = this.ddlCurrentPage.SelectedIndex;
bind();
}
protected void lnkbtnFrist_Click(object sender, EventArgs e)
{
this.GridView1.PageIndex = 0;
bind();
}
protected void lnkbtnPre_Click(object sender, EventArgs e)
{
if (this.GridView1.PageIndex > 0)
{
this.GridView1.PageIndex = this.GridView1.PageIndex - 1;
bind();
}
}
protected void lnkbtnNext_Click(object sender, EventArgs e)
{
if (this.GridView1.PageIndex < this.GridView1.PageCount)
{
this.GridView1.PageIndex = this.GridView1.PageIndex + 1;
bind();
}
}
protected void lnkbtnLast_Click(object sender, EventArgs e)
{
this.GridView1.PageIndex = this.GridView1.PageCount;
bind();
}



liufenfen 2009-11-28
  • 打赏
  • 举报
回复
就是当我点击下一页的时侯GridView不会翻页啊,在gvRoomType_PageIndexChanging()事件里我也设置了下一页代码啊?
PandaIT 2009-11-28
  • 打赏
  • 举报
回复
下一页没反应了?
PandaIT 2009-11-28
  • 打赏
  • 举报
回复
<asp:ImageButton commandName="del"

if(e.CommandName=="del")
{
//这里写事件!!
}
liufenfen 2009-11-28
  • 打赏
  • 举报
回复
可下一页就没反应了,这个又怎么回事咧???
huming_h 2009-11-28
  • 打赏
  • 举报
回复
在rowCommand()里面执行删除事件
如:
你在imagebutton中设置CommandName="remove"属性的值和CommandArgument='<%# Eval("ID") %>'参数的值,然后就可以根据CommandName来判断是否是删除事件
比如
if(e.CommandName=="remove")
{
int id=Convert.toInt32(e.CommandArgument);
}

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧