gridview下获取checkboxlist的值

本来估计很简单的问题,却卡壳了。一开始用的是datalist,在确定程序没错误的情况下,居然获取不到在gridview中的值,郁闷了一下午,终于想开了,换gridview来试试,结果一下子就OK了。

起初使用datalist,在datalist中嵌套checkboxlist,后台代码我是这样写的

   protected void AddRight()
    {
        int roleId = Convert.ToInt32(Request.QueryString["RoleId"]);


        for (int i = 0; i <= dlstModuleRight.Items.Count - 1; i++)
        {
            CheckBoxList chkRights = (CheckBoxList)dlstModuleRight.Items[i].FindControl("chkRoleRight");


            //此句可以攻取ModuleId
            Label lblId = (Label)dlstModuleRight.Items[i].FindControl("lblModuleId");


            int ModuleId= Convert.ToInt32(lblId.Text);


            
            for(int j=0;j<chkRights.Items.Count; j++)
            {
                if (chkRights.Items[j].Selected==true)
                {

                    Rights objRights = new Rights();
                    objRights.Add(roleId,ModuleId, chkRights.Items[j].Value);

                }

                Response.Write(chkRights.Text);
               

            }

可是,却取不到的值的郁闷,我又问了其它人,好像都没什么法子。这样不行,那只能再试着另一种写法了,我又用了以下代码去检验一下:



    protected void AddRight()
    {
        int roleId = Convert.ToInt32(Request.QueryString["RoleId"]);


        for (int i = 0; i <= dlstModuleRight.Items.Count - 1; i++)
        {

            if (this.dlstModuleRight.Items[i].ItemType == ListItemType.AlternatingItem || this.dlstModuleRight.Items[i].ItemType == ListItemType.Item)
            {


Label lblId = (Label)dlstModuleRight.Items[i].FindControl("lblModuleId");
CheckBoxList chkRights = (CheckBoxList)dlstModuleRight.Items[i].FindControl("chkRights");
CheckBox chk = (CheckBox)dlstModuleRight.Items[i].FindControl("chk");


if (lblId != null && chkRights != null)
                        {
                            int iModuleID = int.Parse(lblId.Text);
                            int iRightValue = 0;foreach(ListItem li in chkRights.Items)
                            {
                                if(li.Selected)
                                {
                                    
                                        iRightValue += int.Parse(li.Value);

                                        Response.Write(iRightValue.ToString());
                                    
                                    }

                                   
                                }    
                            }

            }


结果还是没有搞到checkboxlist里面的选择值,很是不爽,但又实在找不到错,希望各位帮忙指正一下:)

百思不得其解后,我索性把datalist撤了,换成gridview,这下爽了,一下子就搞掂了,呵呵 icon_mrgreen.gif icon_mrgreen.gif

代码也不复杂

 protected void imgbtSure_Click(object sender, ImageClickEventArgs e)
    {

        int RoleId = Convert.ToInt32(Request.QueryString["RoleId"]);

        Rights objRights = new Rights();
        
        
        for (int i = 0; i < this.gdvRoleRight.Rows.Count; i++)
        {
            CheckBoxList chkRight = (CheckBoxList)this.gdvRoleRight.Rows[i].Cells[3].FindControl("chkRight");

            int ModuleId = Convert.ToInt32(this.gdvRoleRight.Rows[i].Cells[0].Text.Trim());

            foreach (ListItem li in chkRight.Items)
            {
                if (li.Selected)
                {
                    Response.Write(li.Text + "<br />");

                    objRights.Add(RoleId, ModuleId, li.Value);
                }
            }

        }
    }


写在这里,供大家参与,同时欢迎大家相互交流:)
icon_biggrin.gif icon_biggrin.gif

转载于:https://www.cnblogs.com/eastjazz/archive/2007/07/19/824573.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值