其实我一向很少用关于"list"的控件,因为有DataGrid就基本上都搞定了,然而一方面是为了学习,另一方面也可以灵活的应用更多的控件,于是采用了其中的几个控件,但没想到结果令我大失所望。。。。

  先看看DataList控件,它的使用最郁闷的是不能在IDE环境里绑定数据,而只能用模板(不知道是不是我没学会)。

                    <asp:DataList id="DataList1" runat="server" Width="100%" Visible="False" CssClass="s_verdana"
                        RepeatDirection="Horizontal" ForeColor="Black" BorderColor="#999999" BorderStyle="Solid" BackColor="Silver"
                        CellPadding="1" GridLines="Vertical" BorderWidth="1px" RepeatColumns="4" DataKeyField="c_id">
                        <SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#000099"></SelectedItemStyle>
                        <AlternatingItemStyle BackColor="#CCCCCC"></AlternatingItemStyle>
                        <ItemTemplate>
                            <asp:CheckBox Runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.c_loginName")%>'>
                            </asp:CheckBox>
                        </ItemTemplate>

  数据绑定:

            this.DataList1.DataSource    = m_table.DefaultView;
            this.DataList1.DataKeyField    = "c_id";
            this.DataList1.DataBind();

  看上去和DataGrid一样不是吗?可问题是:这里我这里使用了CheckBox,也就是说用户到时候要选择其中的部份数据,然后提交回来,结果是:你很难得在DataGrid里取回绑定的数据列。。。。。

  再看RadioButtonList:

                <asp:RadioButtonList id="RadioButtonList_MsgType" runat="server" Width="440px" RepeatDirection="Horizontal"
                    CssClass="s_verdana">
                    <asp:ListItem Value="0" Selected="True">All</asp:ListItem>
                    <asp:ListItem Value="1">All Client</asp:ListItem>
                    <asp:ListItem Value="2">All Users</asp:ListItem>
                    <asp:ListItem Value="3">Sperical</asp:ListItem>
                </asp:RadioButtonList>

  这里我只使用了静态的数据,因为这里并没有很多的数据显示。但有一点小问题:我想在上面加一个JavaScript事件,用来响应用户操作,于是我在后台添加代码:

        private void RadioButtonList_MsgType_Load(object sender, System.EventArgs e)
        {
            RadioButtonList m_obj = sender as RadioButtonList;
            m_obj.Attributes.Add("onclick","alert()");
        }

  让我郁闷不以的是:::它并没有在radio添加Onclick事件,查看HTML源代码,差点没把我气死:原来它生成了一个Table,而这个RadioButtonList就是这个Table,而里面的Radio就是行与列了。

<table id="Inc_Admin_MsgManager1_Inc_WAVE_Messages1_RadioButtonList_MsgType" class="s_verdana" οnclick="alert()" border="0" style="width:440px;">
    <tr>
        <td><input id="Inc_Admin_MsgManager1_Inc_WAVE_Messages1_RadioButtonList_MsgType_0" type="radio" name="Inc_Admin_MsgManager1:Inc_WAVE_Messages1:RadioButtonList_MsgType" value="0" /><label for="Inc_Admin_MsgManager1_Inc_WAVE_Messages1_RadioButtonList_MsgType_0">All</label></td><td><input id="Inc_Admin_MsgManager1_Inc_WAVE_Messages1_RadioButtonList_MsgType_1" type="radio" name="Inc_Admin_MsgManager1:Inc_WAVE_Messages1:RadioButtonList_MsgType" value="1" /><label for="Inc_Admin_MsgManager1_Inc_WAVE_Messages1_RadioButtonList_MsgType_1">All Client</label></td><td><input id="Inc_Admin_MsgManager1_Inc_WAVE_Messages1_RadioButtonList_MsgType_2" type="radio" name="Inc_Admin_MsgManager1:Inc_WAVE_Messages1:RadioButtonList_MsgType" value="2" /><label for="Inc_Admin_MsgManager1_Inc_WAVE_Messages1_RadioButtonList_MsgType_2">All Users</label></td><td><input id="Inc_Admin_MsgManager1_Inc_WAVE_Messages1_RadioButtonList_MsgType_3" type="radio" name="Inc_Admin_MsgManager1:Inc_WAVE_Messages1:RadioButtonList_MsgType" value="3" checked="checked" /><label for="Inc_Admin_MsgManager1_Inc_WAVE_Messages1_RadioButtonList_MsgType_3">Sperical</label></td>
    </tr>
</table>

  这也算了,如果非要这样用也行,可以在它的子控件里再添加事件,这样可是麻烦多了。看看CheckBoxList,原理也一样,也就不多说了。
  回到DataList上来,看它如果用CheckBox来取回数据吧,先把所有的子控件都列出来:

        private void AddMessageRelations()
        {
            if(this.RadioButtonList_MsgType.SelectedIndex<3) return;
            CheckBox m_checkBox;
            for(int i=0;i<this.DataList1.Items.Count;i++)
            {
//                m_checkBox = this.DataList1.Items[i].Controls[0] as CheckBox;
//                if(m_checkBox.Checked)
//                {
//                    Response.Write(m_checkBox.Text);
//                }
                Response.Write("i="+i.ToString()+":"+this.DataList1.Items[i].ToString()+"<br/>");
                for(int j=0;j<this.DataList1.Items[i].Controls.Count;j++)
                {
                    Response.Write("j="+j.ToString()+":"+ this.DataList1.Items[i].Controls[j].ToString()+"<br/>");
                }
                Response.Write("<br>==================================<br>");
            }
        }

  看看结果:
 
  好了,清楚是怎么回事了就好办了。以下代码取得用户选定CheckBox的ID值。

        private void AddMessageRelations()
        {
            if(this.RadioButtonList_MsgType.SelectedIndex<3) return;
            CheckBox m_checkBox;
            for(int i=0;i<this.DataList1.Items.Count;i++)
            {
                m_checkBox = this.DataList1.Items[i].Controls[1] as CheckBox;
                if(m_checkBox.Checked)
                {
                    Response.Write(this.DataList1.DataKeys[i].ToString()+":"+m_checkBox.Text+"<br>");
                }
//                Response.Write("i="+i.ToString()+":"+this.DataList1.Items[i].ToString()+"<br/>");
//                for(int j=0;j<this.DataList1.Items[i].Controls.Count;j++)
//                {
//                    Response.Write("j="+j.ToString()+":"+ this.DataList1.Items[i].Controls[j].ToString()+"<br/>");
//                }
//                Response.Write("<br>==================================<br>");
            }
        }

  

转载于:https://www.cnblogs.com/WuCountry/archive/2006/02/09/327746.html

关于CheckBoxList和RadioButtonList的几个问题相关推荐

  1. form表单的reset

    form表单的reset 重置表单(把表单的所有输入元素重置为它们的默认值.): 1.使用reset按钮,条件reset按钮必须在form表单内部. 2. <input id="But ...

  2. Asp.net之数组应用

    string[] abc=new string[8]{"1","2","3","4","1",&qu ...

  3. Asp.net 随记 Part1 (1- 30)

    日期:2008年11月25日 30.Rule: 1.       如果A,B都有值,优先取A 2.       如果A有值,B没值,取A 3.       如果A没值,B有值,取B 4.       ...

  4. 经典博文--各系列文章

    稳扎稳打Silverlight Silverlight 1.0 稳扎稳打Silverlight(1) - 1.0实例之电子表 稳扎稳打Silverlight(2) - 1.0实例之支持录音和回放的钢琴 ...

  5. ASP.NET 4 和 Visual Studio 2010 Web 开发概述

    声明:本文是ASP.NET 白皮书 ASP.NET 4 and Visual Studio 2010 Web Development Overview 的阅读摘要,只是本人的学习记录,并非完整翻译,仅 ...

  6. 汉字转拼音缩写的函数以及其他函数

    /**//// <summary>         /// 清空指定页面上所有的控件内容,包括TextBox,CheckBox,CheckBoxList,RadioButton,Radio ...

  7. ASP.NET 4新增功能(三) 对Web标准的支持和辅助功能的增强

    ASP.NET 控件的早期版本有时会呈现不符合 HTML.XHTML 或辅助功能标准的标记.ASP.NET 4 消除了其中大部分异常情况. 1.用于可禁用控件的 CSS 在 ASP.NET 3.5 中 ...

  8. Web控件文本框Reset的功能

    在前一篇中<怎样实现Web控件文本框Reset的功能>http://www.cnblogs.com/insus/p/4120889.html Insus.NET只实现了文本框的功能.单个或 ...

  9. 分页解决方案 —— GridView + QuickPager + QuickPager_SQL + DataAccessLibrary + 数据库

    这里要说的不仅仅是一个分页控件,而是一套解决方案,包括如何显示数据.显示分页导航,如何得到分页用的sql语句(等效于存储过程),如何提取数据,如何绑定控件,如何响应事件,添加.修改.删除数据后如何更新 ...

最新文章

  1. XML(eXtensible Markup Language)文件的解析
  2. 【 MATLAB 】cat 函数介绍(沿指定维度串联数组)
  3. 服务器主板开机无显维修,电脑主板开机无显示的维修方法-1
  4. iphone同步助手_教你如何用爱思助手给你的苹果手机设置自己喜欢的铃声
  5. C++教程之lambda表达式一
  6. c gui qt 4编程第二版_面试官问Linux下如何编译C程序,如何回答?为你编译演示
  7. procreate 笔刷_Procreate新手漫画入门:笔刷,图层,上色
  8. dedecms织梦(一)
  9. 从被动到主动,换个角度看 DB
  10. Redis bind用法
  11. 干货分享:MySQL之化险为夷的【钻石】抢购风暴【转载】
  12. 【奇淫技巧】Lyndon 分治
  13. 如何使用 Mac 的通知中心?
  14. 欧美经典歌曲100首(51-100…
  15. WIN8 RP版频繁死机
  16. 2022年四川省大学生金融科技建模大赛-模型复现和点评
  17. Redis入门完整教程:CacheCloud接入应用
  18. 图及其应用实验报告 c语言,图的应用 实验报告
  19. python图像识别教程pdf_如何使用Python进行PDF图片识别OCR
  20. 右键没有新建文本文件了.解决方法.

热门文章

  1. HS_300_PE.csv
  2. 比较合适的工作看板组合形式
  3. 夏天有稍微热一点的说法,但是没有冬天没有稍微冷一点的说法
  4. yield(C# 参考)
  5. linux命令之vmstat
  6. omct问题之-webapps下多出的ROOT目录
  7. 富盛Sbo生产管理简介
  8. 系统、网络运维好帮手:expect
  9. oracle的imp和exp
  10. 实现接口与显示实现接口的区别