ASP.NET Repeater与Button 以及viewState 和 hyperLink

例如Repeater重复项 我们要在一个表里作删除以及修改 我们可以在Repeater中添加button控件
前台代码:
button有属性commandName 以及commandArgument
我们可以在coomandArgument中添加内容这样在Repeater中绑定的值就可以获取了,从而对这个值进行操作

<asp:Repeater ID="Repeater1" runat="server" OnItemCommand="Repeater1_ItemCommand">
<ItemTemplate>
<tr>
<td><input type="checkbox" name="checkbox2" id="checkbox2" /></td>
<td class="name"><%#Eval("Title") %></td>
<td><%# Eval("author") %></td>
<td><%# Eval("Categories.Name") %></td>
<td>
<asp:Button ID="Button1" runat="server" Text="修改" CommandName ="xiuGai" CommandArgument ='<%#Eval("id") %>'/>
<asp:Button ID="Button2" runat="server" Text="删除" CommandName="shanChu" CommandArgument ='<%#Eval("id") %>' OnClientClick="javascript:return confirm('确认要删除吗?');"/>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
后台代码:
我们可以从RepeatercommandeventArgs中获取commandName 通过swtich从而应对了多个button的障碍 事件是Repeater的onitemCommand

protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
switch (e.CommandName)
{
case "xiuGai":
// Response.Redirect("bookEdit.aspx?id=" + e.CommandArgument);
break;
case "shanChu":
Books books = new Books() { Id =Convert.ToInt32(e.CommandArgument) };
try
{
BooksManager.Del(books);
Response.Write("<script>alert('删除了id为:" + e.CommandArgument + "');</script>");
Repeater1.DataSource = BooksManager.GetPageBooks(out pagecount, 10, Convert.ToInt32(ViewState["pageindex"]));//重新绑定
Repeater1.DataBind();
}
catch(Exception ex)
{
Response.Write("<script>alert('删除不成功');</script>");
}
break;
}
}

viewState
起源:因为网页是无状态的,例如我们的分页 我们每次去查询数据库(分页),我们不知道当前的PageIndex是多少,如果用变量 + - ,我们每次提交服务器,页面的值都会被刷新.所有我们要使用viewState;
用法 :viewState["value"] = 1; 赋值
int value = viewState["value"];取值
viewState是生命周期是本网页启动 本网页关闭
--------------------------------------------------------------------------------
HyperLink
起源:该控件是超级链接控件 和 html中<a>类似
每次点击的时候都会提交一次服务器
设置NavigateUrl

前台: <asp:HyperLink ID="HyperLink1" runat="server">第一页</asp:HyperLink>
<asp:HyperLink ID="HyperLink2" runat="server">上一页</asp:HyperLink>
<asp:HyperLink ID="HyperLink3" runat="server">下一页</asp:HyperLink>
<asp:HyperLink ID="HyperLink4" runat="server">最后一页</asp:HyperLink>
后台:
HyperLink1.NavigateUrl = "DemoWebForm.aspx?pageIndex=1";
HyperLink2.NavigateUrl = "DemoWebForm.aspx?pageIndex=" + (pageIndex - 1);
HyperLink3.NavigateUrl = "DemoWebForm.aspx?pageIndex=" + (pageIndex + 1);
HyperLink4.NavigateUrl = "DemoWebForm.aspx?pageIndex=" + pageCount;
//通过 request.querystring["pageindex"] 获取分页的index 在访问数据库绑定给repeater

posted @   ZaraNet  阅读(224)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示