急!急!急不知道咋获取所选中的checkbox的值

mnihyf 2011-07-21 11:20:11
各位前辈,小弟刚入江湖,就遇到以下问题,请高手帮忙看下我该咋写呀!

aspx代码如下:


<script type="text/javascript">
//Checkbox全选
function SelectAllCheckboxes(obj){
var theTable = obj.parentNode.parentNode.parentNode;
var inputs = theTable.getElementsByTagName('input');
for(var i = 0;i<inputs.length;i++) {
if(inputs[i].type == "checkbox") {
inputs[i].checked = obj.checked;
}
}
}

/***********************检查编辑按钮******************************/
function EditButton()
{
checkCount = 0;
var checkedBoxValues = GetCheckedBoxValues();

if(checkedBoxValues == "0")
{
alert("请选择要操作的记录!");
return false;
}else if(checkCount > 1)
{
alert("你每次只能选择一条记录操作!");
return false;
}else
{
document.getElementById("CheckGuid").value = checkedBoxValues.replace('0,','');
return true;
}
}

/***********************检查删除按钮******************************/
function DeleteButton()
{

var checkedBoxValues = GetCheckedBoxValues();
if(checkedBoxValues == "0")
{
alert("请选择要删除的记录!");
return false;
}else if(window.confirm("你确定要删除吗?"))
{
document.getElementById("CheckGuid").value = checkedBoxValues.replace('0,','');
return true;
}else
{
return false;
}
}

/***********************得到选中的CheckBox的行绑定的值,如Eval("ML_Id")******************************/
function GetCheckedBoxValues()
{
var checkedBoxValues = "0";
var inputs = document.getElementsByTagName("input");
for(var j = 0 ; j < inputs.length ; j++){
if(inputs[j].type == "checkbox" && inputs[j].id != "checkboxAll"){
if(inputs[j].checked == true){
checkedBoxValues +=( "," +"'"+inputs[j].value+"'");
checkCount++;
}
}
}
return checkedBoxValues;
}

</script>

<div runat="server">
<fieldset>
<legend>---会员等级---</legend>
<asp:GridView runat="server" ID="gvlist" AutoGenerateColumns="False" CellPadding="4"
ForeColor="#333333" GridLines="None" Width="98%">
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#EFF3FB" HorizontalAlign="Center" BorderStyle="Dotted" />
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<input type="checkbox" id="checkboxAll" onclick="javascript:SelectAllCheckboxes(this);" />
</HeaderTemplate>
<ItemTemplate>
<input type="checkbox" id="checkboxItem" value='<%#Eval("ML_Id") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="ML_Name" HeaderText="会员等级" />
<asp:BoundField DataField="ML_Integralpoint" HeaderText="积分满足点" />
<asp:BoundField DataField="ML_Tradingposts" HeaderText="交易满足点" />
<asp:BoundField DataField="ML_Leveldiscount" HeaderText="等级折扣" />
<asp:BoundField DataField="ML_default" HeaderText="是否默认等级" />
</Columns>
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<EditRowStyle BackColor="#2461BF" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
</fieldset>
</div>
<div>
<p>
<asp:Button runat="server" ID="btnAdd" Text="添加" CssClass="bt2" PostBackUrl="~/Admin/MemberManage/MemberLevelEdit.aspx" />  <asp:Button
runat="server" ID="btnEdit" Text="编辑" CssClass="bt2" CausesValidation="false"
OnClientClick="return EditButton()" />  
<asp:Button runat="server" ID="btnDelete" Text="删除" CssClass="bt2" CausesValidation="false"
OnClientClick="return DeleteButton()" OnClick="btnDelete_Click" /></p>
<asp:HiddenField ID="CheckGuid" runat="server" Value="0" />
</div>





aspx.cs代码如下:



using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class Admin_MemberManage_MemberLevel : System.Web.UI.Page
{

/// <summary>
/// 绑定
/// </summary>
public void bind()
{
gvlist.DataSource = BLL.MemberLevelBll.MemberLevel_Select();
gvlist.DataBind();

}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
bind();
}
}
/// <summary>
/// 删除
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnDelete_Click(object sender, EventArgs e)
{
for (int i = 0; i < gvlist.Rows.Count;i++ )
{

CheckBox cb = ((CheckBox)gvlist.Rows[i].FindControl("checkboxItem")) as CheckBox;
if (cb != null && cb.Checked)
{
HiddenField hid = ((HiddenField)gvlist.Rows[i].FindControl("CheckGuid")) as HiddenField;
if (hid != null)
{
int mid = Convert.ToInt32(hid.Value);
BLL.MemberLevelBll.MemberLevel_Delete(mid);
}
}
}

bind();
}
/// <summary>
/// 编辑
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnEdit_Click(object sender, EventArgs e)
{
for (int i = 0; i < gvlist.Rows.Count; i++)
{

CheckBox cb = ((CheckBox)gvlist.Rows[i].FindControl("checkboxItem")) as CheckBox;
if (cb != null && cb.Checked)
{
HiddenField hid = ((HiddenField)gvlist.Rows[i].FindControl("CheckGuid")) as HiddenField;
if (hid != null)
{
int mid = Convert.ToInt32(hid.Value);
Response.Redirect("MemberLevel.aspx?ML_Id='" + mid + "'");
}
}
}
}

}

js代码都没问题,就是编辑和删除时选中的checkbox值为空,总之一句话就是我不知道咋获取选中checkbox的值,望各位前辈指点迷津啊。
...全文
486 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
mnihyf 2011-07-21
  • 打赏
  • 举报
回复
c# code
ItemTemplate>
<input type="checkbox" runat="server" id="checkboxItem" value='<%#Eval("ML_Id") %>' />
</ItemTemplate>

试过了,调试时不为空,直接出错了
code
mnihyf 2011-07-21
  • 打赏
  • 举报
回复
(⊙o⊙)…,这样也可以呀
暖枫无敌 2011-07-21
  • 打赏
  • 举报
回复
你编辑删除时,进行页面跳转并传递参数


//新建
function CreateTemplate() {
parent.block('新建', 600, 440, 'ctlx_Operate.aspx?op=add');
return false;
}

//编辑
function EditTemplate() {
var url = "ctlx_Operate.aspx?op=modify";
if (isChkOne()) {
url += "&cid=" + getChkValues();
parent.block('编辑', 600, 440, url);
return false;
}
}

//删除
function DelTemplate() {
if (ifChk())
parent.block('删除', 365, 170, 'ctlx_Del.aspx?ids=' + getChkValues());
return false;
}



然后不要用按钮了

<div style="float: left; padding-bottom: 6px;">
<a href="javascript:void(0);" class="zPushBtn" onclick="SeeTemplate();">
<img width="20" height="20" src="images/icon012a1.gif" alt="" /><b>查看 </b>
</a>
<a href="javascript:void(0);" class="zPushBtn" onclick="CreateTemplate();">
<img width="20" height="20" src="images/icon001a2.gif" alt="" /><b>新建 </b>
</a>
<a href="javascript:void(0);" class="zPushBtn" onclick="EditTemplate();">
<img width="20" height="20" src="images/icon001a4.gif" alt="" /><b>编辑 </b>
</a>
<a href="javascript:void(0);" class="zPushBtn" onclick="DelTemplate();">
<img width="20" height="20" src="images/icon001a3.gif" alt="" /><b>删除 </b>
</a>
</div>
wuhaojun135 2011-07-21
  • 打赏
  • 举报
回复
jquery 有没有用过啊 试试吧

<script language="javascript">
function ShowPassWord()
{
if($('#<%=PBookM0b035.ClientID%>')!=null)
{

if($('#<%=PBookM0b035.ClientID%>').attr("checked")==true)
{
$(".divPassWord").show();
}
else
{
$(".divPassWord").hide();
}
}

}

</script>


<div><asp:CheckBox ID="PBookM0b035" Runat="server" onclick="ShowPassWord();" Text="私密"></asp:CheckBox>    </div>
<div class="divPassWord" style="DISPLAY:none">设置问题查看密码,如密码遗忘则无法查看问题回复<br>
<asp:Label ID="labPass" Runat="server">密码:</asp:Label><asp:TextBox ID="PassWord" Runat="server"></asp:TextBox></div>


具本的jquery怎么用去网上找下吧 很多的
sfxdawn 2011-07-21
  • 打赏
  • 举报
回复
<ItemTemplate>
<input type="checkbox" runat="server" id="checkboxItem" value='<%#Eval("ML_Id") %>' />
</ItemTemplate>

试试看呢?
mnihyf 2011-07-21
  • 打赏
  • 举报
回复
试过了,要是换成<asp:checkbox...那么js就没法调用了。
暖枫无敌 2011-07-21
  • 打赏
  • 举报
回复

<script type="text/javascript">
/*全选函数*/
function selectAllcheckbox(table, dom) {
var myTable = document.getElementById(table);
var objs = myTable.getElementsByTagName("input");
for (var i = 0; i < objs.length; i++) {
if (objs[i].type.toLowerCase() == "checkbox")
objs[i].checked = dom.checked;
}
}
function getChkValues() {
var i = 0;
var chkArr = document.getElementsByName("cb_i");
var param = "";
for (i = 0; i < chkArr.length; i++)
if (chkArr[i].checked)
param += chkArr[i].value + ",";

return param.substring(0, param.length - 1);
}

function isChkOne() {
var number = 0;
var chkArr = document.getElementsByName("cb_i");
for (var i = 0; i < chkArr.length; i++)
if (chkArr[i].checked) {
number++;
if (number > 1) {
parent.Alert('您只能同时编辑一个选中项,您选择了多个选中项!');
return false;
}
}
if (number == 0) {
parent.Alert('请先选择要操作的选中项!');
return false;
}

return true;
}
function isSeeOne() {
var number = 0;
var chkArr = document.getElementsByName("cb_i");
for (var i = 0; i < chkArr.length; i++)
if (chkArr[i].checked) {
number++;
if (number > 1) {
parent.Alert('您只能同时查看一个选中项,您选择了多个选中项!');
return false;
}
}
if (number == 0) {
parent.Alert('请先选择要操作的选中项!');
return false;
}

return true;

}

function ifChk() {

var chkArr = document.getElementsByName("cb_i");

for (i = 0; i < chkArr.length; i++)

if (chkArr[i].checked)

return true;


parent.Alert('请先选择要操作的选中项!');

return false;
}
</script>
sfxdawn 2011-07-21
  • 打赏
  • 举报
回复
<ItemTemplate>
<input type="checkbox" id="checkboxItem" value='<%#Eval("ML_Id") %>' />
</ItemTemplate>

换成服务器控件<asp:CheckBox....>试试看
梦纷飞舞 2011-07-21
  • 打赏
  • 举报
回复
换成服务器控件


然后试试这段代码

//复选框全选

function trueCheckAll(obj)
{
for(var i=0;i<document.getElementById(obj).getElementsByTagName("input").length;i++)
{
document.getElementById(obj+"_"+i).checked=true;// 取状态(是否check):
}
}
//复选框全不选

function falseCheckAll(obj)
{
for(var i=0;i<document.getElementById(obj).getElementsByTagName("input").length;i++)
{
document.getElementById(obj+"_"+i).checked=false;// 取状态(是否check):
}
}
//复选框反选

function againstCheck(obj)
{
for (var i = 0; i < document.getElementById(obj).getElementsByTagName("input").length; i++)
{
document.getElementById(obj+"_"+i).checked = !document.getElementById(obj+"_"+i).checked;
}
}
mnihyf 2011-07-21
  • 打赏
  • 举报
回复
谢谢各位的帮助,小弟刚刚自己解决了,用“ System.Web.UI.HtmlControls.HtmlInputCheckBox cb = row.FindControl("checkboxItem") as System.Web.UI.HtmlControls.HtmlInputCheckBox;”这句话搞定了。再次感谢各位了。
qingYun1029 2011-07-21
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 lileixin521 的回复:]

这是用repeater做的,原理和我的相同,都是这种方法。不过你那是单个checkbox,我的写了两个,还是有差异的。我的源码上用一个隐藏控件,cs代码上通过调用隐藏控件来实现一系列功能的。
[/Quote]

用repeater原理是一样的。。

repeater一般用来重复table中的tr,你在对应的行里面添加checkbox也是一样的。

你是要做全部删除吗??

你在重复checkbox的时候记得将后台获取的id值绑定到checkbox的value属性上面,这样你后台获取到的就是选中的行的id值。。

然后delete tab where id in (“获取的那个值”)


多方便呀。。
哒哒 2011-07-21
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 qingyun1029 的回复:]
引用 15 楼 qingyun1029 的回复:

怎么都讲得这么复杂啊???

用html标签中的checkbox就可以了。。

比如说“爱好”是个多选项。。

可以写html代码

HTML code

<input type="checkbox" name="aihao" value="lanqiu" />篮球
<input type="checkbox" name……
[/Quote]
楼上的看到的头晕,这个正解!
mnihyf 2011-07-21
  • 打赏
  • 举报
回复
这是用repeater做的,原理和我的相同,都是这种方法。不过你那是单个checkbox,我的写了两个,还是有差异的。我的源码上用一个隐藏控件,cs代码上通过调用隐藏控件来实现一系列功能的。
qingYun1029 2011-07-21
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 qingyun1029 的回复:]

怎么都讲得这么复杂啊???

用html标签中的checkbox就可以了。。

比如说“爱好”是个多选项。。

可以写html代码

HTML code

<input type="checkbox" name="aihao" value="lanqiu" />篮球
<input type="checkbox" name="aihao" value="足球" />足球
<inp……
[/Quote]


<input type="checkbox" name="aihao" value="lanqiu" />篮球
<input type="checkbox" name="aihao" value="足球" />足球
<input type="checkbox" name="aihao" value="pingpingqiu" />乒乓球

注意这三个checkbox的name属性值是一样的
qingYun1029 2011-07-21
  • 打赏
  • 举报
回复
怎么都讲得这么复杂啊???

用html标签中的checkbox就可以了。。

比如说“爱好”是个多选项。。

可以写html代码


<input type="checkbox" name="aihao" value="lanqiu" />篮球
<input type="checkbox" name="aihao" value="足球" />足球
<input type="checkbox" name="aihao" value="pingpingqiu" />乒乓球


你的后台程序:

protected void Button1_Click(object sender, EventArgs e)
{
string str = Request.Form["aihao"];

Response.Write(str);
}


获取到的str会自动讲你选中的checkbox以","拼接成字符串。。。
  • 打赏
  • 举报
回复
自己悟去
mnihyf 2011-07-21
  • 打赏
  • 举报
回复
各位大虾们,都在哪里呀 !~~~~(>_<)~~~~
  • 打赏
  • 举报
回复
protected void selectall_Click(object sender, EventArgs e)
{
foreach (RepeaterItem item in rep.Items)
{
CheckBox chk = (CheckBox)item.FindControl("chk");
chk.Checked = true;
}
}
protected void selectno_Click(object sender, EventArgs e)
{
foreach (RepeaterItem item in rep.Items)
{
CheckBox chk = (CheckBox)item.FindControl("chk");
chk.Checked = false;
}
}
protected void selectback_Click(object sender, EventArgs e)
{
foreach (RepeaterItem item in rep.Items)
{
CheckBox chk = (CheckBox)item.FindControl("chk");
chk.Checked = !chk.Checked;
}
}

protected void rep_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
Literal litca = (Literal)e.Item.FindControl("litca");
string sql = "select n_cname from b_catalog where n_cid=" + int.Parse(litca.Text.ToString());
object obj = sqlhelper.ExecuteScalar(sql);
if (obj != null)
{
litca.Text = obj.ToString();
}
}
  • 打赏
  • 举报
回复
protected void delselect_Click(object sender, EventArgs e)
{
int msg = 0;
foreach (RepeaterItem item in rep.Items)//用此方法可以从外部寻找Repeater内部控件并控制
{
CheckBox chk = (CheckBox)item.FindControl("chk");
if (chk != null && chk.Checked == true)
{
msg = 1;
LinkButton lbtn = (LinkButton)item.FindControl("lbtn");
int id = int.Parse(lbtn.CommandArgument.ToString());
string sql = "delete from b_news where n_nid=" + id;
int row = sqlhelper.ExecuteQuery(sql);
if (row <= 0)
{
ClientScript.RegisterStartupScript(this.GetType(), "message", "<script language='javascript'>alert('删除新闻失败,请联系管理员')</script>");
return;
}
}
}
if (msg == 0)
{
ClientScript.RegisterStartupScript(this.GetType(), "message", "<script language='javascript'>alert('没有选择项')</script>");
return;
}
repeaterdatabind();
}
  • 打赏
  • 举报
回复
直接贴代码

<asp:Repeater ID="rep" runat="server" onitemdatabound="rep_ItemDataBound">
<ItemTemplate>
<tr align='center' bgcolor="#FFFFFF" onmousemove="javascript:this.bgColor='#FCFDEE';" onmouseout="javascript:this.bgColor='#FFFFFF';" height="22" >
<td><%# anp.CurrentPageIndex > 1 ? Container.ItemIndex + 1 + (anp.CurrentPageIndex - 1) * anp.PageSize : Container.ItemIndex + 1%></td>
<td><asp:CheckBox ID="chk" runat="server" CssClass="np" /></td>
<td align="left"><a href='/threadbaike/<%#Eval("statichtml") %>' target="_blank"><u><%#sqlhelper.StringTruncat(Eval("n_title").ToString(), 40, "...")%></u></a></td>
<td><%#Eval("n_time")%></td>
<td>
<asp:Literal ID="litca" runat="server" Text='<%#Eval("n_cid")%>'></asp:Literal></td>
<td>admin</td>
<td><a href="upnew.aspx?newsId=<%#Eval("n_nid") %>">编辑</a> | <asp:LinkButton ID="lbtn" runat="server" CommandArgument='<%#Eval("n_nid") %>' OnCommand="lbtn_Click" OnClientClick="return confirm('你确定要删除所选择的新闻吗?')">删除</asp:LinkButton></td>
</tr>

</ItemTemplate>
</asp:Repeater>

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧