datalist 为什么获取不到绑定项中的checkbox 绑定?怎么回事啊!好心人帮忙解决下吧!多谢啊!

asp.net 获取Datalist中Checkbox的值的小结
阅读:1319次&&&时间: 00:00:00&&
前台的示例代码如下,用的是datalist控件,要显示的是Student表中的StudentID和姓名 复制代码 代码如下: &asp:DataList ID="dlTable" runat="server" & &ItemTemplate& &td align="center"& &asp:Label ID="lblID" runat="server" Text='&%#Eval("StudentID") %&' Visible="false"&&/asp:Label& &asp:CheckBox ID="Chkbox" runat="server" /& &/td& &td& &%#Eval("studentname") %& &/td& &td& &%#Eval("studentid") %& &/td& &/ItemTemplate& &/asp:DataList&
后台代码如下: 复制代码 代码如下: //new一个stringbulider的实例sbitems StringBuilder sbitems = new StringBuilder(); foreach (DataListItem item in dlTable.Items) { //获取前台控件 CheckBox chkbox = item.FindControl("Chkbox") as CheckB Label lbId = item.FindControl("lblID") as L //如果checkbox被check了,那么将对应的label绑定的值赋给sbitems,以进行后续的操作,比如删除。 if (chkbox == null || lblID== null) {
} if (chkbox.Checked) { sbitems.Append(lblID.Text.ToString()); sbitems.Append(","); } } //由于多了一个逗号,所以还要remove掉逗号 if (!sbitems.ToString().Trim().Equals(string.Empty)) { sbitems.Remove(sbitems.Length - 1, 1); }
这样就获取了前台checkbox中选取的值,但是我感觉这个方法用的好像复杂了一点,各位达人如果有更好的通过C#获取Checkbox值得方法,请赐教。本人很想知道如何使用Checkboxlist的方法。
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
Copyright &
All Rights Reserved单击头模板中的checkbox,实现datalist中所有chebox的全选和取消
使用C#和javascript都可以实现,第二种更好一些,页面不用总是刷新。&
1、用c#实现:
aspx文件:
&&&&&&&&&&&
&asp:DataList ID="dlistNews" runat="server"
&&&&&&&&&&&
&HeaderTemplate&&table&
&&&&&&&&&&&
&&&&&&&&&&&&&&&
&asp:CheckBox ID="chkAll"
runat="server"& Text="全选"
OnCheckedChanged="chkAll_CheckedChanged"&
&&&&&&&&&&&
&/HeaderTemplate&
&&&&&&&&&&&
&FooterTemplate&&/table&&/FooterTemplate&
&&&&&&&&&&&
&ItemTemplate&&&&&&&&&&&&
&&&&&&&&&&&&&&&
&asp:CheckBox ID="chk"
runat="server"&
/&&/td&。。。。
&&&&&&&&&&&
&/ItemTemplate&
&/asp:DataList&
响应函数:&&&
protected void chkAll_CheckedChanged(object sender, EventArgs
&&&&&&&&&&&
if (((CheckBox)sender).Checked==true)
&&&&&&&&&&&
&&&&&&&&&&&&&&&
foreach (DataListItem j in dlistNews.Items)
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
CheckBox cb = (CheckBox)j.FindControl("chk");
&&&&&&&&&&&&&&&&&&&
cb.Checked =
&&&&&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&&&&&
foreach (DataListItem j in dlistNews.Items)
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
CheckBox cb = (CheckBox)j.FindControl("chk");
&&&&&&&&&&&&&&&&&&&
cb.Checked =
&&&&&&&&&&&&&&&
&&&&&&&&&&&
开始时不懂用((CheckBox)sender).Checked来获取chkAll的值,通过listItem的FindControl来查找,无论如何都找不到,查了很久才发现在listItem中查找的只是Itemtemplate中的控件,在headertemplate和footertemplate中的必须用其他方法。
查找headertemplate的:((CheckBox)dlistNews.Controls[0].FindControl("chkAll"))。这样也可以得到chkAll的值。
查找footertemplate的:((CheckBox)dlistNews.Controls[dlistNews.Controls.Count
- 1].FindControl("chkAll"))
2、用javascript实现
把chkAll的属性修改为:&asp:CheckBox ID="chkAll"
runat="server"& Text="全选" onclick="SelectAll(this)
&script type="text/javascript"
language="javascript"&
&&& function
SelectAll(box)
var table =
document.getElementByIdx_x("dlistNews");&&
//获得datalist
var checkes =table.getElementsByTagName_r("input");
for(var i=0;i&checkes.i++)
&&&&&&&&&&
if(box.checked == true)
&&&&&&&&&&&
&&&&&&&&&&&&&&&
if(checkes[i].type=="checkbox")
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
checkes[i].checked=
&&&&&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&&&&&
if(checkes[i].type=="checkbox")
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&
checkes[i].checked=
&&&&&&&&&&&&&&&
&&&&&&&&&&&
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 视觉中国下吧 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信