获取不到Repeater控件中的CheckBox选中状态

写在前面的话:在做一个项目的时候,需要使用到Repeater控件,并且在Repeater控件内放置了CheckBox控件来标志需要删除的行,选中后,在后台取到的CheckBox的值总是为false。最后发现是在PageLoad函数中没有判断是否是回发就绑定了Repeater控件的数据,那么每次进入页面CheckBox控件的值当然被刷新为false了。

前台页面:

 1 <div class="contianer p10">
 2         <h3>
 3             当前位置:<a href="Index.aspx" target="_self" >首页</a>>文章管理</h3>
 4         <hr/>
 5         <div class="content">         
 6                 <asp:repeater ID="rptArticle" runat="server" ClientIDMode="Static" >
 7                 <HeaderTemplate>
 8                 <table border="0" cellspacing="0" cellpadding="0" width="100%">
 9                     <tr>
10                         <th width="6%">选择</th>
11                         <th width="6%">编号</th>
12                         <th align="left">文章标题</th>
13                         <th width="16%">发布时间</th>
14                         <th width="10%">操作</th>
15                     </tr>
16                     </HeaderTemplate>
17                     <ItemTemplate>
18                         <tr>
19                             <td><asp:CheckBox ID="cb_id" CssClass="checkall" runat="server" /></td>
20                             <td><asp:Label ID="lb_id" runat="server" Text='<%#Eval("aNo")%>'></asp:Label></td>
21                             <td><a href="ArticleShow.aspx?id=<%#Eval("aNo") %>"><%#Eval("aTitle")%></a></td>
22                             <td><%#string.Format("{0:g}", Eval("aDate"))%></td>
23                             <td><span><a href="ArticleShow.aspx?id=<%#Eval("aNo") %>">修改</a></span></td>
24                         </tr>
25                     </ItemTemplate>
26                     <FooterTemplate>
27                     </table>
28                     </FooterTemplate>
29                 </asp:repeater>
30         </div>
31         <div class="clear"></div>
32           <!-- 分页控件 -->
33           <div>
34             <webdiyer:AspNetPager ID="AspNetPager1" runat="server" HorizontalAlign="Right" ShowCustomInfoSection="Right"
35                 Width="100%" Style="font-size: 12px" inputboxstyle="width:19px" CustomInfoHTML=""
36                 ShowPageIndexBox="Always" AlwaysShow="false" FirstPageText="首页" LastPageText="尾页"
37                 NextPageText="下一页" PrevPageText="上一页" CustomInfoStyle="FONT-SIZE: 12px" CurrentPageButtonClass="pagination"
38                 PageSize="16" ForeColor="#1460AD" OnPageChanged="AspNetPager1_PageChanged">
39             </webdiyer:AspNetPager>
40           </div>
41           <!-- 分页控件end -->
42 
43         <br />
44         <asp:Button ID="BtnDelete" runat="server" 
45         OnClientClick="return confirm( '确定要删除这些记录吗? ');" 
46         onclick="BtnDelete_Click" Text="删除" />
47     &nbsp;
48         <asp:Label ID="lbMsg" runat="server" Text=""></asp:Label>
49         &nbsp;
50         <asp:Button ID="BtnAdd" runat="server" Text="添加" 
51             onclick="BtnAdd_Click"/>
52 
53     </div>

后台页面:

 1 ArticleBLL bll = new ArticleBLL();
 2         protected void Page_Load(object sender, EventArgs e)
 3         {
 4             this.lbMsg.Text = "";
 5             if (!IsPostBack)
 6             {
 7                 BindRepeater();
 8             }
 9         }
10         // 绑定数据
11         private void BindRepeater()
12         {
13             string strSql = "select * from article";
14 
15             PagedDataSource ps = new PagedDataSource();
16             ps.DataSource = bll.GetDataList(strSql).DefaultView;
17             AspNetPager1.RecordCount = ps.Count;
18             ps.CurrentPageIndex = AspNetPager1.CurrentPageIndex - 1;
19             ps.AllowPaging = true;
20             ps.PageSize = AspNetPager1.PageSize;
21             this.rptArticle.DataSource = ps;
22             this.rptArticle.DataBind();
23         }
24         // 分页控件事件绑定
25         public void AspNetPager1_PageChanged(object sender, EventArgs e)
26         {
27             BindRepeater();
28         }
29         // 添加文章
30         protected void BtnAdd_Click(object sender, EventArgs e)
31         {
32             Response.Redirect("ArticleShow.aspx");
33         }
34         // 删除
35         protected void BtnDelete_Click(object sender, EventArgs e)
36         {
37             for (int i = 0; i < rptArticle.Items.Count; i++)
38             {
39                 int id = Convert.ToInt32(((Label)rptArticle.Items[i].FindControl("lb_id")).Text);
40                 CheckBox cb = (CheckBox)rptArticle.Items[i].FindControl("cb_id");
41                 if (cb.Checked)
42                 {
43                     bll.Delete(id.ToString());
44                 }
45             }
46             this.lbMsg.Text = "删除成功";
47         }

处理办法是在PageLoad里面判断是否是回发就可以了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Repeater控件是ASP.NET的一个数据绑定控件,用于在页面重复显示数据。想要根据数据库状态不同值改变图片,需要在Repeater控件的ItemDataBound事件进行判断和操作。 具体步骤如下: 1. 在Repeater控件的ItemTemplate添加一个Image控件,用于显示图片。 2. 在Repeater控件的ItemDataBound事件获取当前数据行的状态值,可以通过e.Item.DataItem来获取。 3. 根据状态值不同,设置Image控件的ImageUrl属性为不同的图片路径。 以下是示例代码: ``` <asp:Repeater ID="repeater1" runat="server" OnItemDataBound="repeater1_ItemDataBound"> <ItemTemplate> <asp:Image ID="imgStatus" runat="server" /> </ItemTemplate> </asp:Repeater> protected void repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { // 获取当前数据行的状态值 int status = Convert.ToInt32(DataBinder.Eval(e.Item.DataItem, "Status")); // 根据状态值设置图片路径 Image imgStatus = (Image)e.Item.FindControl("imgStatus"); if (status == 1) { imgStatus.ImageUrl = "status1.png"; } else if (status == 2) { imgStatus.ImageUrl = "status2.png"; } else { imgStatus.ImageUrl = "default.png"; } } } ``` 上述代码,根据数据库的Status字段的不同值,设置了对应的图片路径。在Repeater控件的ItemDataBound事件,通过DataBinder.Eval方法获取当前数据行的状态值,并根据其值设置Image控件的ImageUrl属性。需要注意的是,在设置Image控件的ImageUrl属性时,需要使用相对路径或绝对路径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值