获取不到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里面判断是否是回发就可以了。

时间: 2024-10-05 03:57:09

获取不到Repeater控件中的CheckBox选中状态的相关文章

asp.net关于Repeater控件中的全选,批量操作

今天在Repeater控件中碰到一个全选的操作,于是上网查了一下,找到一个觉得比较好,便记录下来, 界面代码简化之后(全选操作): <script type="text/javascript"> function SelectAll(parentChk, ChildId, bigControlID) { var oElements = document.getElementsByTagName("INPUT"); var bIsChecked = par

Repeater控件中触发按钮事件出现System.ArgumentException: 回发或回调参数无效。在配置中使用 &lt; pages enableEventValidation=&quot;true&quot;/&gt;

今天,在Repeater控件中添加了一个按钮,可是在执行时确提示 System.ArgumentException: 回发或回调参数无效.在配置中使用 < pages enableEventValidation="true"/> <asp:Repeater ID="rpList" runat="server" OnItemCommand="rpList_ItemCommand"> <ItemTem

winfrom中DataGridView绑定数据控件中DataGridViewCheckBoxColumn怎么选中

for (int i = 0; i < this.dataGridView1.Rows.Count; i++) { this.dataGridView1.Rows[i].Cells["CheckBoxCulums"].Value = this.checkBox1.Checked; } winfrom中DataGridView绑定数据控件中DataGridViewCheckBoxColumn怎么选中,布布扣,bubuko.com

获取Repeater控件中的每一项数据

var items = rptList.Items;//获取Repeater控件的所有项 foreach (RepeaterItem item in items)//遍历每一项内容 {   var tb = item.FindControl("tbLending") as TextBox;   string lend_con = tb.Text.ToString(); }

ASP.NET- 查找Repeater控件中嵌套的控件

如何在Repeater的HeaderTemplate和FooterTemplate模板中寻找控件?在Repeater的ItemTemplate模板中的控件,我们可以用Items属性来遍历行并用FindControl进行寻找. 如下所示:在Repeater的Item Command事件下下遍历: for(int i=0;i<repeater1.Items.Count;i++) { CheckBox cb=(CheckBox )repeater1.Items[i].FindControl("C

asp.net 在repeater控件中加按钮

在repeater中加入方法有两种方法: 第一种:是对repeater控件的行添加OnItemCommand事件,添加方法也是有两种 1.在设计页面中,选中repeater控件右击==>属性==>属性栏中的事件标签(闪电符号)==>双击ItemCommand 2.在写代码,也是可以实现. <asp:Repeater ID="rptDataList" runat="server" onitemcommand="rptDataList_

JQuery获取指定元素中的checkbox选中状态的一些属性

项目中用户上传病例数据,每一次上传自动生成一个病例文件夹,数据保存到后台,前端显示文件夹,现在的需求是勾选想要删除的文件夹的chenckbox,点击删除后,数据库和前端都相应的更新. 如果是静态页面,直接根据id或者class定位到checkbox,然后判断状态,直接remove即可.但是动态页面,需要与后台交互同步,前端相应的文件夹删除,后台数据库也要删除文件夹内的数据,每一个病例文件夹对应数据库的一个recordId,那么问题是,如何知道当前checkbox选中的文件夹对应的病例id(文件夹

Repeater控件中的三目运算

<asp:Repeater ID="rptimg" runat="server">        <ItemTemplate>        <img src="<%#Eval("prourl").ToString()==""? Eval("prourl"): Eval("image")%>" longdesc="&

asp.net前台ListView中判断CheckBox选中状态

<asp:CheckBox ID="CheckBox1" runat="server" Text="作废" Checked='<%#Eval("pl_Cancel")!=null ? false : true %>' /> //利用三元运算,这条的主要作用判断绑定数据不为空<%#Eval("pl_Cancel")!=null ? false : true %>