如何判断GridView中的CheckBox是否勾选?

程序猿GG 2009-10-09 10:34:54
我想实现的功能是:当下面GridView中第一栏位的CheckBox选中时, 读取该行记录的Shipment_Id栏位(第二栏)的值.
那么我该如何判哪些行的CheckBox是选中状状?

如果我想控制,只允许有一行为选中状态(即不允许有同时两行被勾选), 该如何做?
<asp:GridView ID="GridView1" runat="server" Width="100%" DataSourceID="ods_HFA_PackingList"
AutoGenerateColumns="False" CellPadding="3">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="chk_HFA" runat="server" /></ItemTemplate>
<HeaderStyle Width="10px" Wrap="False" />
<ItemStyle Width="10px" Wrap="False" />
</asp:TemplateField>
<asp:BoundField DataField="Shipment_Id" HeaderText="走货批次">
<HeaderStyle HorizontalAlign="Center" Wrap="False" />
<ItemStyle HorizontalAlign="Center" Wrap="False" />
</asp:BoundField>
<asp:BoundField DataField="Carton_Qty" HeaderText="总箱数">
<HeaderStyle HorizontalAlign="Center" Wrap="False" />
<ItemStyle HorizontalAlign="Center" Wrap="False" />
</asp:BoundField>
<asp:BoundField DataField="Sum_Budget_Packing_Qty" HeaderText="预装数">
<HeaderStyle HorizontalAlign="Center" Wrap="False" />
<ItemStyle HorizontalAlign="Center" Wrap="False" />
</asp:BoundField>
<asp:BoundField DataField="Sum_Packed_Qty" HeaderText="已装数量">
<HeaderStyle HorizontalAlign="Center" Wrap="False" />
<ItemStyle HorizontalAlign="Center" Wrap="False" />
</asp:BoundField>
<asp:BoundField DataField="Exfactory_Notes_Code" HeaderText="走货单号">
<HeaderStyle HorizontalAlign="center" Wrap="false" />
<ItemStyle HorizontalAlign="center" Wrap="false" />
</asp:BoundField>
</Columns>
<HeaderStyle BackColor="#E0E0E0" />
<AlternatingRowStyle Wrap="False" />
</asp:GridView>
...全文
884 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
sgwz850 2010-09-19
  • 打赏
  • 举报
回复
顶真理,学习学习
mldsh_111 2010-07-13
  • 打赏
  • 举报
回复
顶楼上的,学习了。
yxzbest 2009-10-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 f231358 的回复:]
C# codebool cbx=false;string Shipment_Id_value;for (int i=0; i<this.GridView1.Rows.Count; i++)
{
cbx= ((CheckBox)GridView1.Rows[i].FindControl("CheckBox1")).Checked;if (cbx¡­
[/Quote]
lcglvgn 2009-10-09
  • 打赏
  • 举报
回复
顶楼上,你把选中的checked变为true,其他的设置成为false就OK了
f231358 2009-10-09
  • 打赏
  • 举报
回复
不好意思 上面的代码
FindControl( "CheckBox1 ")
把里面的CheckBox1 改成你的chk_HFA

随手写的 比较急
另外 只允许有一行为选中状态(即不允许有同时两行被勾选),
这个最好用JS 如果用后台的 点一下就会刷新页面
用JS只在客户端运行 减轻服务器负担
一会我开完会没人回的话我再给你写吧~~~
f231358 2009-10-09
  • 打赏
  • 举报
回复

bool cbx= false;
string Shipment_Id_value;
for (int i = 0; i < this.GridView1.Rows.Count; i++)
{
cbx = ((CheckBox)GridView1.Rows[i].FindControl( "CheckBox1 ")).Checked;
if (cbx)
{
Shipment_Id_value = GridView1.Rows[i].Cells["1"].Text.Trim();//获取该行记录的Shipment_Id栏位(第二栏)的值.

}
randomfeel 2009-10-09
  • 打赏
  • 举报
回复
用findcontrol,在后台写GridView1.FindControl("chk_HFA"),然后把对象转成CheckBox,判断是否勾选

用js,点击勾选某一行时,把其他行的勾选状态都设置为false
Iovswety 2009-10-09
  • 打赏
  • 举报
回复

for i = 0 to gridview.rows.count - 1
ctpye(GridView.Rows(i).FindControl("chk_HFA"), CheckBox).Checked
next

62,242

社区成员

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

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

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

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