代码和思路如下:
在页面中有多个checkbox控件.
<input id="chkSys" type="checkbox" runat="server" value="sys_m" />系统管理
<input id="chkLink" type="checkbox" runat="server" value="link_m" />友情链接管理
<input id="chkUser" type="checkbox" runat="server" value="user_m" />友情链接管理
....为了取value值.所以将html控件设置runat="server"..cs代码:
page_load事件中有一权限字段.
string limit="sys_m,link_m"; //对应checkbox的value值
string[] param = limit.Split(',');问题1:如何判断param数组中的值是否与相应的checkbox的value值对应.如果对应.则将其选中.如果不对应,则不选中.
问题2:如果遍历该页面中的所有checkbox控件.并判断其是否选中.如果选中.则将其value值以字符串形式拼接起来并存入数据库
PS:不知道思路是否有问题.如果有问题请高手们提出.并加以改进.
在页面中有多个checkbox控件.
<input id="chkSys" type="checkbox" runat="server" value="sys_m" />系统管理
<input id="chkLink" type="checkbox" runat="server" value="link_m" />友情链接管理
<input id="chkUser" type="checkbox" runat="server" value="user_m" />友情链接管理
....为了取value值.所以将html控件设置runat="server"..cs代码:
page_load事件中有一权限字段.
string limit="sys_m,link_m"; //对应checkbox的value值
string[] param = limit.Split(',');问题1:如何判断param数组中的值是否与相应的checkbox的value值对应.如果对应.则将其选中.如果不对应,则不选中.
问题2:如果遍历该页面中的所有checkbox控件.并判断其是否选中.如果选中.则将其value值以字符串形式拼接起来并存入数据库
PS:不知道思路是否有问题.如果有问题请高手们提出.并加以改进.
为了方便遍历,我在所有checkbox上加了一个panel控件
string t = "sys_m,sys_m";//数据库取出来的字符串
string[] p = t.Split(',');
foreach (Control con in this.Panel1.Controls)
{
if (con is HtmlInputCheckBox)
{
HtmlInputCheckBox c = con as HtmlInputCheckBox;
foreach (string s in p)
{
if (s == c.Value)
c.Checked = true;
}
}
}问题2:代码
string v = "";
foreach (Control con in this.Panel1.Controls)
{
if (con is HtmlInputCheckBox)
{
HtmlInputCheckBox c = con as HtmlInputCheckBox;
if (c.Checked)
{
v += c.Value + ",";
}
}
}
if (v.Length > 0)
{
v = v.Substring(0, v.Length - 1);
}
然后获得该控件的值,如果等于param中的值就把checkbox置为checked
后边一个问题也可以用这种方法,你揣摩下。
你可以用checkboxlist来显示一组checkbox服务器端:
foreach(ListItem item in checkboxlist1.Items)
{
Response.write(item.text);
response.write(item.value);
}
<input id="chkLink" name="ckb" type="checkbox" runat="server" value="link_m" />友情链接管理
<input id="chkUser" name="ckb" type="checkbox" runat="server" value="user_m" />友情链接管理 后台:protected void Page_Load(object sender, EventArgs e)
{
if(IsPostBack)
{
//直接就可以取到
string limit = Request.Form["ckb"];//="sys_m,link_m";
}
}
自己试试
<input id="chkLink" name="ckb" type="checkbox" value="link_m" />友情链接管理
<input id="chkUser" name="ckb" type="checkbox" value="user_m" />友情链接管理
protected void Page_Load(object sender, EventArgs e)
{
if(IsPostBack)
{
//直接就可以取到
string limit = Request.Form["ckb"];//="sys_m,link_m";
}
}
上面是取得选取中的checkbox值..
如果是你想按指定的字符串="sys_m,link_m"来选中相应的文本框
protected void Page_Load(object sender, EventArgs e)
{
string limit ="sys_m,link_m";
Page.ClientScript.RegisterStartupScript(this.GetType(), "selectCheckbox", "SelectCheckBox('"+ limit +"')", true);
}function SelectCheckBox(sValue)
{
sValue = ","+sValue+",";
var ckbs = document.getElementsByName("ckb");
for(i=0;i<ckbs.length;i++)
{
if(sValue.indexOf(","+ckbs[i].value+",")!=-1)
{
ckbs[i].checked = true;
}
}
}
放着好好的checkboxlist不用。
暂用采用了huming_h的方法.
hf.Value=limit
string[] param = limit.Split(',');
hf为HiddenField
<asp:CheckBoxList ID="ckb" runat="server" RepeatDirection="Horizontal" RepeatColumns="5">
</asp:CheckBoxList>
function check()
{
var ckelems = document.getElementById("ckb").getElementsByTagName("input");
var spelems = document.getElementById("ckb").getElementsByTagName("span");
var hd=document.getElementById("hf");
var strhd=hd.value;
var str=strhd.split(",");
for(var i=0;i<ckelems.length;i++)
{
if(ckelems[i].type=="checkbox")
{
if(strhd.indexOf(spelems[i].value1+",")<0)
ckelems[i].checked;
}
}
}
var arrAll=document.all;
for(var i=0;i<arrAll.length;i++)
{
if(arrAll[i].type=='checkbox')
{
document.getElementById(arrAll[i].id).checked=true;
}
}
foreach (Control con in this.Panel1.Controls)
{
if (con is HtmlInputCheckBox)
{
HtmlInputCheckBox c = con as HtmlInputCheckBox;
if (c.Checked)
{
str+= c.Value + ",";
}
}
}
或
foreach (ListItem lst in ckb.Items)
{
if (lst.Selected)
str+= lst.Value + ",";
}
{ var datalist1 = document.getElementById("Datalist1");
var inputLength1 = datalist1.getElementsByTagName("input").length
var radCount = 0;
for(var i = 0; i < inputLength1; i++)
{
var inputControl1 = datalist1.getElementsByTagName("input").item(i);
if(inputControl1.type == "radio")
{
if(inputControl1.checked == true)
{
radCount = radCount + 1;
}
}
}
if(radCount == 0)
{
alert("please choose leave applications ");
return false;
}
return true;
}
你的理解是错误的,给定了id和runat="server", 那么name就和id是一样的。