<input type="checkbox" name="articlepower" value="1" />查看
<input type="checkbox" name="articlepower" value="2" />添加
<input type="checkbox" name="articlepower" value="3" />修改
<input type="checkbox" name="articlepower" value="4" />删除在添加时,我保存在数据库的一个purview字段里,格式为1,2,3,4,如果其中有一项没有被选中,比如“修改”没选中,那么保存格式为1,2,4。请问在修改资料时,读取这个权限的值后,如何将相应的CheckBox被选中呢???我用的是C#,求高人指点一二,谢谢。

解决方案 »

  1.   

    测试通过了,试试吧:
    前台:
    <input type="checkbox" id="articlepower1" runat="server" name="articlepower1" value="1" />查看 
    <input type="checkbox" id="articlepower2" runat="server" name="articlepower2" value="2" />添加 
    <input type="checkbox" id="articlepower3" runat="server" name="articlepower3" value="3" />修改 
    <input type="checkbox" id="articlepower4" runat="server" name="articlepower4" value="4" />删除
    后台:
        protected void Page_Load(object sender, EventArgs e)
        {
            string xxx = "1,3,4";
            string[] s=xxx.Split(',');
            for (int i = 0; i < s.Length; i++)
            {
                if (s[i] == "1")
                    articlepower1.Checked = true;
                if (s[i] == "2")
                    articlepower2.Checked = true;
                if (s[i] == "3")
                    articlepower3.Checked = true;
                if (s[i] == "4")
                    articlepower4.Checked = true;
            }
        }
      

  2.   

    mngzilin,这招确实通过了。^_^可是一般的权限系统,少说都有20多个checkbox。。难道我只能用for一个个的来判断吗?
      

  3.   

    string xxx = "1,3,4";
    articlepower1.Checked=xxx.indexOf(articlepower1.value+",")>0就OK了
      

  4.   

    string xxx = "1,3,4,"; 
    articlepower1.Checked=xxx.indexOf(articlepower1.value+",")>0 就OK了
      

  5.   

    dfzx
     
    不太明白您的意思mngzilin,还有更好的方法吗?万一一个页面有2、30多个checkbox,该怎么办啊
      

  6.   


    请问……权限设置一般都有20多个,甚至更多的checkbox。。难道都这么赋值的???
      

  7.   

    最简单的方法,将所有Checkbox放到一个panel里,然后循环所有checkbox,判断值是否字段值匹配
        <asp:Panel ID="Panel1" runat="server">
            <input type="checkbox" id="articlepower1" runat="server" name="articlepower1" value="1" />查看
            <input type="checkbox" id="articlepower2" runat="server" name="articlepower2" value="2" />添加
            <input type="checkbox" id="articlepower3" runat="server" name="articlepower3" value="3" />修改
            <input type="checkbox" id="articlepower4" runat="server" name="articlepower4" value="4" />删除
        </asp:Panel>protected void Page_Load(object sender, EventArgs e)
            {
                if(!IsPostBack)
                {
                    string[] val = "1,2,3".Split(',');                foreach (Control chb in Panel1.Controls)
                    {
                        if (chb is HtmlInputCheckBox)
                        {                        if (val.Contains(((HtmlInputCheckBox)chb).Value))
                            {
                                ((HtmlInputCheckBox)chb).Checked = true;
                            }
                        }
                    }
                }
            }
      

  8.   

    大概说个思路
    将权限及其所对应的值保存在一个地方,比如说字符串数组或者ENUM里面
    显示的时候将这些值绑定到CheckBoxList,然后再根据数据库里面的值给CheckBox赋值不过感觉最好是把数据库的设计改一下,不要保存在一个字段里
      

  9.   

    你当然要通过foreach循环遍历整个页面中的所有checkbox,不然怎么能得到每个的值呢?
      

  10.   

    val.Contains(((HtmlInputCheckBox)chb).Value)
    这一段有点问题吧?val.Contains :val是数组,没有Contains方法哦
      

  11.   

            string[] val = "1,2,3".Split(',');        foreach (Control chb in Panel1.Controls) {
                if (chb is HtmlInputCheckBox) {
                    for (int i = 0; i < val.Length; i++) {
                        if (val[i].Contains(((HtmlInputCheckBox)chb).Value)) {
                            ((HtmlInputCheckBox)chb).Checked = true;
                        }
                    }
                }
            }改了一下,可以了。不过foreach里套用for,会不会非常影响效率啊……?