<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#,求高人指点一二,谢谢。
<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#,求高人指点一二,谢谢。
前台:
<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;
}
}
articlepower1.Checked=xxx.indexOf(articlepower1.value+",")>0就OK了
articlepower1.Checked=xxx.indexOf(articlepower1.value+",")>0 就OK了
不太明白您的意思mngzilin,还有更好的方法吗?万一一个页面有2、30多个checkbox,该怎么办啊
请问……权限设置一般都有20多个,甚至更多的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;
}
}
}
}
}
将权限及其所对应的值保存在一个地方,比如说字符串数组或者ENUM里面
显示的时候将这些值绑定到CheckBoxList,然后再根据数据库里面的值给CheckBox赋值不过感觉最好是把数据库的设计改一下,不要保存在一个字段里
这一段有点问题吧?val.Contains :val是数组,没有Contains方法哦
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,会不会非常影响效率啊……?