前台页面代码:<asp:Repeater ID="r_modelList" runat="server">
<HeaderTemplate>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr class="tabHeader">
<td> </td>
<td>
<input type="checkbox" id="cb_selectAll" onclick="modelNameAllcheck()" />
模块名称
</td>
<td>
查看
<select id="cb_viewType" onchange="viewTypeChange('cb_viewType','viewType')">
<option value="0">无</option>
<option value="1">自己</option>
<option value="2">岗位</option>
<option value="3">单位</option>
<option value="4">所有</option>
</select>
</td>
<td>
<input type="checkbox" id="cb_Add_tile" onclick="addAll()" />
添加
</td>
<td>
修改 <select id="cb_edit" onchange="viewTypeChange('cb_edit','editType')">
<option value="0">无</option>
<option value="1">自己</option>
<option value="2">岗位</option>
<option value="3">单位</option>
<option value="4">所有</option>
</select>
</td>
<td>
删除 <select id="cb_del" onchange="viewTypeChange('cb_del','delType')">
<option value="0">无</option>
<option value="1">自己</option>
<option value="2">岗位</option>
<option value="3">单位</option>
<option value="4">所有</option>
</select>
</td>
<td>
上报 <select id="cb_sb" onchange="viewTypeChange('cb_sb','sbType')">
<option value="0">无</option>
<option value="1">自己</option>
<option value="2">岗位</option>
<option value="3">单位</option>
<option value="4">所有</option>
</select>
</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<input type="hidden" name="hf_ModuleID" value=<%#Eval("ModuleID") %> />
</td>
<td>
<input type=checkbox name="cb_modelName" value=<%#Eval("ModuleID") %> />
<%#Eval("ModuleName")%>
</td>
<td>
<select name="viewType">
<option value="0">无</option>
<option value="1">自己</option>
<option value="2">岗位</option>
<option value="3">单位</option>
<option value="4">所有</option>
</select>
</td>
<td>
<input type="checkbox" id="addName" name="cb_addName" />
</td>
<td>
<select name="editType">
<option value="0">无</option>
<option value="1">自己</option>
<option value="2">岗位</option>
<option value="3">单位</option>
<option value="4">所有</option>
</select>
</td>
<td>
<select name="delType">
<option value="0">无</option>
<option value="1">自己</option>
<option value="2">岗位</option>
<option value="3">单位</option>
<option value="4">所有</option>
</select>
</td>
<td>
<select name="sbType">
<option value="0">无</option>
<option value="1">自己</option>
<option value="2">岗位</option>
<option value="3">单位</option>
<option value="4">所有</option>
</select>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
后台代码: /// <summary>
/// 提交数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btn_submit_Click(object sender, EventArgs e)
{
//r_modelList.Items
List<Flat_ModuleInRole> al = new List<Flat_ModuleInRole>();
string[] cb_modelName = Request.Params.GetValues("cb_modelName"); string[] cb_viewType = Request.Params.GetValues("viewType"); foreach(RepeaterItem ri in r_modelList.Items)
{
// ri.Controls[3]
CheckBox cb_ModelName_check = ri.FindControl("cb_modelName") as CheckBox;
if (cb_ModelName_check!=null&&cb_ModelName_check.Checked)
{
Flat_ModuleInRole mir = new Flat_ModuleInRole();
HiddenField hfId = ri.FindControl("hf_ModuleID") as HiddenField;
mir.ModuleID = hfId.Value;
DropDownList ddl_viewType = ri.FindControl("cb_viewType") as DropDownList;
mir.CanSelect =Int32.Parse( ddl_viewType.SelectedValue);
CheckBox cb_add = ri.FindControl("cb_addName") as CheckBox;
if (cb_add.Checked)
{
mir.CanInsert = 1;
}
else
{
mir.CanInsert = 0;
} DropDownList ddl_edit = ri.FindControl("editType") as DropDownList;
mir.CanUpdate = Int32.Parse(ddl_edit.SelectedValue); DropDownList ddl_del = ri.FindControl("delType") as DropDownList;
mir.CanDelete = Int32.Parse(ddl_del.SelectedValue); DropDownList ddl_up = ri.FindControl("sbType") as DropDownList;
mir.CanUp = Int32.Parse(ddl_up.SelectedValue); switch(hf_Flag.Value)
{
case "1":
mir.URM=1;
mir.RoleId = Int32.Parse(hf_id.Value);
break;
case "2":
mir.URM=2;
mir.UserID =Int32.Parse( hf_id.Value);
break;
} al.Add(mir);
} }
ModelInRoleDAL mird = new ModelInRoleDAL();
int result = mird.update(al);
if (result > 0)
{
//添加成功
}
else
{
//添加失败
}
}
现在想通过后台读取用户选择的Select中的value,还有CheckBox中的值如何实现呢?
刚开始 ,用服务器控件实现,但是涉及到全选、DropDownList选择后前台页面中的<input type=checkbox name="cb_modelName" value=<%#Eval("ModuleID") %> />也必须选中,而且Asp.net的服务器控件输出到页面的时候Name会改变,不得已前台又换回了Html控件,使用JS控制前台页面
<HeaderTemplate>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr class="tabHeader">
<td> </td>
<td>
<input type="checkbox" id="cb_selectAll" onclick="modelNameAllcheck()" />
模块名称
</td>
<td>
查看
<select id="cb_viewType" onchange="viewTypeChange('cb_viewType','viewType')">
<option value="0">无</option>
<option value="1">自己</option>
<option value="2">岗位</option>
<option value="3">单位</option>
<option value="4">所有</option>
</select>
</td>
<td>
<input type="checkbox" id="cb_Add_tile" onclick="addAll()" />
添加
</td>
<td>
修改 <select id="cb_edit" onchange="viewTypeChange('cb_edit','editType')">
<option value="0">无</option>
<option value="1">自己</option>
<option value="2">岗位</option>
<option value="3">单位</option>
<option value="4">所有</option>
</select>
</td>
<td>
删除 <select id="cb_del" onchange="viewTypeChange('cb_del','delType')">
<option value="0">无</option>
<option value="1">自己</option>
<option value="2">岗位</option>
<option value="3">单位</option>
<option value="4">所有</option>
</select>
</td>
<td>
上报 <select id="cb_sb" onchange="viewTypeChange('cb_sb','sbType')">
<option value="0">无</option>
<option value="1">自己</option>
<option value="2">岗位</option>
<option value="3">单位</option>
<option value="4">所有</option>
</select>
</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<input type="hidden" name="hf_ModuleID" value=<%#Eval("ModuleID") %> />
</td>
<td>
<input type=checkbox name="cb_modelName" value=<%#Eval("ModuleID") %> />
<%#Eval("ModuleName")%>
</td>
<td>
<select name="viewType">
<option value="0">无</option>
<option value="1">自己</option>
<option value="2">岗位</option>
<option value="3">单位</option>
<option value="4">所有</option>
</select>
</td>
<td>
<input type="checkbox" id="addName" name="cb_addName" />
</td>
<td>
<select name="editType">
<option value="0">无</option>
<option value="1">自己</option>
<option value="2">岗位</option>
<option value="3">单位</option>
<option value="4">所有</option>
</select>
</td>
<td>
<select name="delType">
<option value="0">无</option>
<option value="1">自己</option>
<option value="2">岗位</option>
<option value="3">单位</option>
<option value="4">所有</option>
</select>
</td>
<td>
<select name="sbType">
<option value="0">无</option>
<option value="1">自己</option>
<option value="2">岗位</option>
<option value="3">单位</option>
<option value="4">所有</option>
</select>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
后台代码: /// <summary>
/// 提交数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btn_submit_Click(object sender, EventArgs e)
{
//r_modelList.Items
List<Flat_ModuleInRole> al = new List<Flat_ModuleInRole>();
string[] cb_modelName = Request.Params.GetValues("cb_modelName"); string[] cb_viewType = Request.Params.GetValues("viewType"); foreach(RepeaterItem ri in r_modelList.Items)
{
// ri.Controls[3]
CheckBox cb_ModelName_check = ri.FindControl("cb_modelName") as CheckBox;
if (cb_ModelName_check!=null&&cb_ModelName_check.Checked)
{
Flat_ModuleInRole mir = new Flat_ModuleInRole();
HiddenField hfId = ri.FindControl("hf_ModuleID") as HiddenField;
mir.ModuleID = hfId.Value;
DropDownList ddl_viewType = ri.FindControl("cb_viewType") as DropDownList;
mir.CanSelect =Int32.Parse( ddl_viewType.SelectedValue);
CheckBox cb_add = ri.FindControl("cb_addName") as CheckBox;
if (cb_add.Checked)
{
mir.CanInsert = 1;
}
else
{
mir.CanInsert = 0;
} DropDownList ddl_edit = ri.FindControl("editType") as DropDownList;
mir.CanUpdate = Int32.Parse(ddl_edit.SelectedValue); DropDownList ddl_del = ri.FindControl("delType") as DropDownList;
mir.CanDelete = Int32.Parse(ddl_del.SelectedValue); DropDownList ddl_up = ri.FindControl("sbType") as DropDownList;
mir.CanUp = Int32.Parse(ddl_up.SelectedValue); switch(hf_Flag.Value)
{
case "1":
mir.URM=1;
mir.RoleId = Int32.Parse(hf_id.Value);
break;
case "2":
mir.URM=2;
mir.UserID =Int32.Parse( hf_id.Value);
break;
} al.Add(mir);
} }
ModelInRoleDAL mird = new ModelInRoleDAL();
int result = mird.update(al);
if (result > 0)
{
//添加成功
}
else
{
//添加失败
}
}
现在想通过后台读取用户选择的Select中的value,还有CheckBox中的值如何实现呢?
刚开始 ,用服务器控件实现,但是涉及到全选、DropDownList选择后前台页面中的<input type=checkbox name="cb_modelName" value=<%#Eval("ModuleID") %> />也必须选中,而且Asp.net的服务器控件输出到页面的时候Name会改变,不得已前台又换回了Html控件,使用JS控制前台页面
<script type="text/javascript">
//模块名是否选中
function check(flag) {
var e = form1.elements;
for (var i = 0; i < e.length; i++) {
if (e[i].name == "cb_modelName") {
e[i].checked = flag;
}
}
}
function modelNameAllcheck() {
var e = form1.elements;
if (document.getElementById("cb_selectAll").checked)//全选处于checked
{
for (var i = 0; i < e.length; i++) {
if (e[i].name == "cb_modelName") {
e[i].checked = true;
}
}
}
else//全选处于非checked
{
for (var i = 0; i < e.length; i++) {
if (e[i].name == "cb_modelName") {
e[i].checked = false;
}
}
}
}
//添加全部选中
function addAll() {
var e = form1.elements;
if (document.getElementById("cb_Add_tile").checked)//全选处于checked
{
for (var i = 0; i < e.length; i++) {
if (e[i].name == "cb_addName") {
e[i].checked = true;
}
}
}
else//全选处于非checked
{
for (var i = 0; i < e.length; i++) {
if (e[i].name == "cb_addName") {
e[i].checked = false;
}
}
}
} function selectChange(onName,conName) {
var e = form1.elements;
var viewType = document.getElementById(onName).value;
for (var i = 0; i < e.length; i++) {
if (e[i].name == conName) {
for (var no = 0; no < e[i].options.length; no++) {
if (e[i].options[no].value == viewType) {
e[i].options[no].selected = true;
}
}
}
}
}
//查看
function viewTypeChange(onName, conName) { selectChange(onName, conName); //如果是修改,则把查看改成同级别
if (onName == "cb_viewType") {
var edit = document.getElementById("cb_viewType").value;
if (edit != 0) {
check(true);
selectChange(onName, 'viewType');
}
}
else if (onName == "cb_edit") {
var edit = document.getElementById("cb_edit").value;
if (edit != 0) {
check(true);
selectChange(onName, 'viewType');
}
}
else if (onName == "cb_del") {
var edit = document.getElementById("cb_del").value;
if (edit != 0) {
check(true);
selectChange(onName, 'viewType');
}
}
else if (onName == "cb_sb") {
var edit = document.getElementById("cb_sb").value;
if (edit != 0) {
check(true);
selectChange(onName, 'viewType');
}
}
}
</script>
1.现在想通过后台读取用户选择的Select中的value,还有CheckBox中的值如何实现呢?答:根据控件的name属性。后台用request.params["控件name"]可以得到。
我用这个方法了。
string[] cb_modelName = Request.Params.GetValues("cb_modelName");string[] cb_viewType = Request.Params.GetValues("viewType");问题是 还有个选了,比如说选择了这个模块,后面的权限才可以获取,而这样的话,他会获取所有的值,易混乱
<asp:Repeater runat="server" ID="rpFunList">
<ItemTemplate>
<tr>
<td>
<asp:CheckBox ID="CheckBox1" runat="server" />
<asp:Label ID="Id" runat="server" Text='<%#Eval("ID")%>' Visible="false"></asp:Label></td>
<td><%#Eval("字段名")%> </td>
<td><%#Eval("字段名")%> </td>
<td><%#Eval("字段名")%> </td>
</tr>
</ItemTemplate>
</asp:Repeater>
js判断是否全选
function chkAll_true()
{
var chkall= document.all["chkAll"];
var chkother= document.getElementsByTagName("input");
for (var i=0;i<chkother.length;i++)
{
if( chkother[i].type=='checkbox')
{
if(chkother[i].id.indexOf('CheckBox1')>-1)
{
if(chkall.checked==true)
{
chkother[i].checked=true;
}
else
{
chkother[i].checked=false;
}
}
}
}
}
后台取值:
for (int i = 0; i < this.Repeater1.Items.Count; i++)
{
CheckBox cbox = (CheckBox)Repeater1.Items[i].FindControl("CheckBox1");
Label lbId = (Label)Repeater1.Items[i].FindControl("Id");
if (cbox.Checked == true)
{
//获取ID
int id = int.Parse(Id.Text.ToString());
//执行你要的操作
}
}
{
HtmlSelect s= ri.FindControl("Select1") as HtmlSelect;
}
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Repeater ID="r_modelList" runat="server">
<HeaderTemplate>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr class="tabHeader">
<td> </td>
<td>
<input type="checkbox" id="cb_selectAll" onclick="modelNameAllcheck()" />
模块名称
</td>
<td>
查看
<select id="cb_viewType" onchange="viewTypeChange('cb_viewType','viewType')">
<option value="0">无</option>
<option value="1">自己</option>
<option value="2">岗位</option>
<option value="3">单位</option>
<option value="4">所有</option>
</select>
</td>
<td>
<input type="checkbox" id="cb_Add_tile" onclick="addAll()" />
添加
</td>
<td>
修改 <select id="cb_edit" onchange="viewTypeChange('cb_edit','editType')">
<option value="0">无</option>
<option value="1">自己</option>
<option value="2">岗位</option>
<option value="3">单位</option>
<option value="4">所有</option>
</select>
</td>
<td>
删除 <select id="cb_del" onchange="viewTypeChange('cb_del','delType')">
<option value="0">无</option>
<option value="1">自己</option>
<option value="2">岗位</option>
<option value="3">单位</option>
<option value="4">所有</option>
</select>
</td>
<td>
上报 <select id="cb_sb" onchange="viewTypeChange('cb_sb','sbType')">
<option value="0">无</option>
<option value="1">自己</option>
<option value="2">岗位</option>
<option value="3">单位</option>
<option value="4">所有</option>
</select>
</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<input type="hidden" id="hf_ModuleID" name="hf_ModuleID" value=<%#Eval("ModuleID") %> runat=server />
</td>
<td>
<input type="checkbox" id="cb_modelName" name="cb_modelName" value=<%#Eval("ModuleID") %> runat=server />
<%#Eval("ModuleName")%>
</td>
<td>
<select id="viewType" name="viewType" runat=server>
<option value="0">无</option>
<option value="1">自己</option>
<option value="2">岗位</option>
<option value="3">单位</option>
<option value="4">所有</option>
</select>
</td>
<td>
<input type="checkbox" id="addName" name="cb_addName" runat=server />
</td>
<td>
<select id="editType" name="editType" runat=server>
<option value="0">无</option>
<option value="1">自己</option>
<option value="2">岗位</option>
<option value="3">单位</option>
<option value="4">所有</option>
</select>
</td>
<td>
<select id="delType" name="delType" runat=server>
<option value="0">无</option>
<option value="1">自己</option>
<option value="2">岗位</option>
<option value="3">单位</option>
<option value="4">所有</option>
</select>
</td>
<td>
<select id="sbType" name="sbType" runat=server>
<option value="0">无</option>
<option value="1">自己</option>
<option value="2">岗位</option>
<option value="3">单位</option>
<option value="4">所有</option>
</select>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</ContentTemplate>
</asp:UpdatePanel>
</div>
后台代码:
/// <summary>
/// 提交数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btn_submit_Click(object sender, EventArgs e)
{
//r_modelList.Items
List<Flat_ModuleInRole> al = new List<Flat_ModuleInRole>(); foreach(RepeaterItem ri in r_modelList.Items)
{
// ri.Controls[3]
HtmlInputCheckBox cb_ModelName_check = (HtmlInputCheckBox)ri.FindControl("cb_modelName");
//CheckBox cb_ModelName_check = ri.FindControl("cb_modelName") as CheckBox;
if (cb_ModelName_check!=null&&cb_ModelName_check.Checked)
{
Flat_ModuleInRole mir = new Flat_ModuleInRole();
HtmlInputHidden hfId = ri.FindControl("hf_ModuleID") as HtmlInputHidden;
mir.ModuleID = hfId.Value;
HtmlSelect ddl_viewType = ri.FindControl("viewType") as HtmlSelect;
mir.CanSelect =Int32.Parse( ddl_viewType.Value);
HtmlInputCheckBox cb_add = ri.FindControl("addName") as HtmlInputCheckBox;
if (cb_add.Checked)
{
mir.CanInsert = 1;
}
else
{
mir.CanInsert = 0;
} HtmlSelect ddl_edit = ri.FindControl("editType") as HtmlSelect;
mir.CanUpdate = Int32.Parse(ddl_edit.Value); HtmlSelect ddl_del = ri.FindControl("delType") as HtmlSelect;
mir.CanDelete = Int32.Parse(ddl_del.Value); HtmlSelect ddl_up = ri.FindControl("sbType") as HtmlSelect;
mir.CanUp = Int32.Parse(ddl_up.Value); switch(hf_Flag.Value)
{
case "1":
mir.URM=1;
mir.RoleId = Int32.Parse(hf_id.Value);
break;
case "2":
mir.URM=2;
mir.UserID =Int32.Parse( hf_id.Value);
break;
} al.Add(mir);
} }
ModelInRoleDAL mird = new ModelInRoleDAL();
int result = mird.update(al);
if (result > 0)
{
//添加成功
Response.Write("<script>alert('修改成功!');history.go(-1);</script>");
}
else
{
//添加失败
Response.Write("<script>alert('修改失败!');</script>");
}
}
function check(flag) {
var e = form1.elements;
for (var i = 0; i < e.length; i++) {
var ctrName = e[i].name;
var con = ctrName.substring(ctrName.lastIndexOf("$")+1, ctrName.length)
if (con == "cb_modelName") {
e[i].checked = flag;
}
}
}
function modelNameAllcheck() {
var e = form1.elements;
if (document.getElementById("cb_selectAll").checked)//全选处于checked
{
for (var i = 0; i < e.length; i++) {
var ctrName = e[i].name;
var con = ctrName.substring(ctrName.lastIndexOf("$") + 1, ctrName.length);
if (con == "cb_modelName") {
e[i].checked = true;
}
}
}
else//全选处于非checked
{
for (var i = 0; i < e.length; i++) {
var ctrName = e[i].name; var con = ctrName.substring(ctrName.lastIndexOf("$") + 1, ctrName.length);
if (con == "cb_modelName") {
e[i].checked = false;
}
}
}
}
//添加全部选中
function addAll() {
var e = form1.elements;
if (document.getElementById("cb_Add_tile").checked)//全选处于checked
{
for (var i = 0; i < e.length; i++) {
var ctrName = e[i].name;
var con = ctrName.substring(ctrName.lastIndexOf("$") + 1, ctrName.length);
if (con == "addName") {
e[i].checked = true;
}
}
}
else//全选处于非checked
{
for (var i = 0; i < e.length; i++) {
var ctrName = e[i].name;
var con = ctrName.substring(ctrName.lastIndexOf("$") + 1, ctrName.length);
if (con == "addName") {
e[i].checked = false;
}
}
}
} function selectChange(onName,conName) {
var e = form1.elements;
var viewType = document.getElementById(onName).value;
for (var i = 0; i < e.length; i++) {
var ctrName = e[i].name;
var con = ctrName.substring(ctrName.lastIndexOf("$") + 1, ctrName.length);
//alert("ctrName = "+ctrName + " | con = "+con+ " | conName = "+conName);
if (con == conName) {
for (var no = 0; no < e[i].options.length; no++) {
if (e[i].options[no].value == viewType) {
e[i].options[no].selected = true;
}
}
}
}
}
//查看
function viewTypeChange(onName, conName) { selectChange(onName, conName); //如果是修改,则把查看改成同级别
if (onName == "cb_viewType") {
var edit = document.getElementById("cb_viewType").value;
if (edit != 0) {
check(true);
selectChange(onName, 'viewType');
}
}
else if (onName == "cb_edit") {
var edit = document.getElementById("cb_edit").value;
if (edit != 0) {
check(true);
selectChange(onName, 'viewType');
}
}
else if (onName == "cb_del") {
var edit = document.getElementById("cb_del").value;
if (edit != 0) {
check(true);
selectChange(onName, 'viewType');
}
}
else if (onName == "cb_sb") {
var edit = document.getElementById("cb_sb").value;
if (edit != 0) {
check(true);
selectChange(onName, 'viewType');
}
}
}
FindControl 只能找到服务器控件,无法找到Html控件的。