gridview里选中checkbox修改的问题?

麻烦的一笔 2009-12-16 05:30:41
function ask_edit(url,w,h)
{
var sid="";
var chks = document.getElementById('<%=gvDetails.ClientID %>').getElementsByTagName('input') ;
var flag = true;
var cnkLength="";
for(var i=0; i<chks.length; i++)
{
if(chks[i].checked && chks[i].type =="checkbox")
{
flag=false;
break;
}else{
sid=chks[i].value;
}

}
if(flag){
alert("必须选择一行修改!");
return false;
}
if (w>0 && h>0)
{
window.open(url+'.aspx?id='+sid,w,h);
}
else
{
window.open(url+'.aspx?id='+sid);
}

<asp:GridView ID="gvDetails" runat="server" PageSize="15"  DataKeyNames="id" 
OnRowCreated="gvDetails_RowCreated" AutoGenerateColumns="False"
Width="100%" HorizontalAlign="Center">
<RowStyle HorizontalAlign="Center" VerticalAlign="Middle" Height="24px" />
<Columns>
<asp:TemplateField>
<ItemTemplate>
<input id="ckbDelID" name="sid" runat="server" type="checkbox" value='<%# Eval("id") %>' style="height:24px"/>
<%--<input id="rad" type="radio" value='<%# Eval("id") %>' />--%>
</ItemTemplate>
</asp:TemplateField>
<asp:Button ID="rbnEdit" runat="server" CssClass="sky_blue" OnClientClick="ask_edit('Laborage_edit');" Text="修 改" />

只能选中一个进行修改,但是现在js实现有点问题?
...全文
184 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lovely_baby 2009-12-16
  • 打赏
  • 举报
回复
做出来就好~~
麻烦的一笔 2009-12-16
  • 打赏
  • 举报
回复
还是要感谢各位对我的帮助,刚进一个公司这个功能就没做出来,对我以后谈工资没利啊!
麻烦的一笔 2009-12-16
  • 打赏
  • 举报
回复
终于做出来了,在服务端完成的代码:

protected void upd_Click(object sender, EventArgs e)
{
string count = "";
for (int i = 0; i < GridView1.Rows.Count; i++)
{
HtmlInputCheckBox ckbUpdate =
(HtmlInputCheckBox) this.GridView1.Rows[i].FindControl("ckbUpdate");
if (ckbUpdate.Checked)
{
count += ckbUpdate.Value + ",";

}
}
string[] str = count.Split(',');
if (str.Length != 2)
{
Page.ClientScript.RegisterStartupScript(GetType(), "1", "<script>alert('修改必须选中一项')</script>");
return;
}
else
{
string aaa = count.Remove(count.IndexOf(','));
Page.ClientScript.RegisterStartupScript(GetType(), "1", "<script>alert('"+aaa+"')</script>");
//Response.Redirect("TestID.aspx?id" + str);
}

}
麻烦的一笔 2009-12-16
  • 打赏
  • 举报
回复
看似很简单的问题怎么这么难搞呢?
wuyq11 2009-12-16
  • 打赏
  • 举报
回复
<input type="checkbox" runat="server" id="chkSelect" onclick="AddValues(this)" value='<%#Eval("ID")%>' title='<%#Eval("ID")%>' NAME="chkSelect"/>

function AddValues(oChk) {
if(oChk.checked)
{
Form1.Hd.value += "," + oChk.value;
}
else
{
Form1.Hd.value = Form1.Hd.value.replace("," + oChk.value,"");
}
}
wuyq11 2009-12-16
  • 打赏
  • 举报
回复
if(chks[i].checked && chks[i].type =="checkbox")
{
flag=false;
sid+=chks[i].value+",";
}
else
{
}
麻烦的一笔 2009-12-16
  • 打赏
  • 举报
回复
我选在没有选中的功能已经做出来了,但是如果用户选中2个要修改的话就要报错
这个还没做出来,没有选中的代码:

function edit(){
var chks = document.getElementById("<%=GridView1.ClientID %>").getElementsByTagName('input');
var count =0;
var sid="";
var flag = true
//alert(count);
for(var i=0; i<chks.length;i++)
{
if(chks[i].checked && chks[i].type =="checkbox")
{
flag = false;
break;
}
}
if(flag){
alert("必须选中一项");
return false;
}
}

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
DataKeyNames="id" DataSourceID="SqlDataSource1">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<input type="checkbox" runat="server" id="ckbUpdate" value='<%# Eval("id") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="id" HeaderText="id" InsertVisible="False"
ReadOnly="True" SortExpression="id" />
<asp:BoundField DataField="filename" HeaderText="filename"
SortExpression="filename" />
<asp:BoundField DataField="users" HeaderText="users" SortExpression="users" />
</Columns>
</asp:GridView>
麻烦的一笔 2009-12-16
  • 打赏
  • 举报
回复
对啊 ,如果选中2项及以上就要返回错误信息
koukoujiayi 2009-12-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 qwe8254 的回复:]
也就是说或如果checkbox选中2项以上后js该如何写?
[/Quote]
根据你的题意,就是给出信息吗??
麻烦的一笔 2009-12-16
  • 打赏
  • 举报
回复
也就是说或如果checkbox选中2项以上后js该如何写?
koukoujiayi 2009-12-16
  • 打赏
  • 举报
回复
测试通过
        function test() 
{
var gv = document.getElementById("<%= GridView1.ClientID %>");
var cbs = gv.getElementsByTagName("input");
var row = 0;
var rowId = ""
var j=0;
for (var i = 0; i < cbs.length; i++)
{
if (cbs[i].type == "checkbox")
{
if (cbs[i].checked == true)
{

rowId = row ;
j++
}
row++;
}
}
if(j==0 || j>1)
{
if(j==0)
alert("必须选中一行!!");
else
alert("不能选择多行,只能选一行!");

return false;
}
else
{
alert("选中的行是--" + rowId);
return true;
}
}
Rock870210 2009-12-16
  • 打赏
  • 举报
回复
 for(var i=0; i<chks.length; i++)
{
if(chks[i].checked && chks[i].type =="checkbox")
{
flag=false;
break;
}else{
sid=chks[i].value;
}

}
这里如果为了控制只能选中一个,并且把选择的值取出来的话,那这段Js就错了。
获取的Input有多种,这点你该知道
var count=0;
for(var i=0; i<chks.length; i++)
{
if(chks[i].type=="checkbox")
{
if(chks[i].checked)
count++;
}
}
if(count==1)
sid=chks[i].value;
else
flag=false;
Rock870210 2009-12-16
  • 打赏
  • 举报
回复
if(chks[i].checked && chks[i].type =="checkbox")为何这样写,.type应该在&&之前吧
支持海贼王 2009-12-16
  • 打赏
  • 举报
回复
我没太看明白你调用js的那个按钮那段代码...
gridview每行后面都会跟着一个修改吗??
Lovely_baby 2009-12-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 qwe8254 的回复:]
gridview里每项都有绑定的checkbox在修改的时候只能选中一项修改,如果选中多项js会弹出对话框
[/Quote]
var j=0;
for(var i=0; i<chks.length; i++)
{
if(chks[i].checked && chks[i].type =="checkbox")
{
j++;
if(j>1)
break;
flag=false;
}else{
sid=chks[i].value;
}

麻烦的一笔 2009-12-16
  • 打赏
  • 举报
回复
gridview里每项都有绑定的checkbox在修改的时候只能选中一项修改,如果选中多项js会弹出对话框
chenjianyong94 2009-12-16
  • 打赏
  • 举报
回复
如果:想要选中此项,将其:打开页面将ID带过去,查询出值,在修改即可。。。

直接在控件绑定的时候,将ID绑定在button控件中。。。
chenjianyong94 2009-12-16
  • 打赏
  • 举报
回复
什么意思吗??实现的功能是什么??
麻烦的一笔 2009-12-16
  • 打赏
  • 举报
回复
有人会吗?急啊!!!

62,074

社区成员

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

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

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

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