怎样获得DataGrid中的CheckBox的选中情况?

memoriccell 2003-09-12 02:35:11
使用模板列在每行加入了一个CheckBox。
然后需要在点击确定按钮的时候知道哪些CheckBox被选中了,应该怎么做呢?
我的代码如下:
这是定义DataGrid结构的代码
<Columns>
<asp:TemplateColumn HeaderText="操作"> <ItemTemplate>
<asp:CheckBox ID="testchk" Runat="server"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="emp_id" HeaderText="员工号"/>
<asp:BoundColumn DataField="emp_name" HeaderText="员工姓名"/> <asp:BoundColumn DataField="arrange_time" HeaderText="正常工时"/>
<asp:BoundColumn DataField="fact_work_time" HeaderText="实际工时"/>
<asp:BoundColumn DataField="over_time" HeaderText="加班"/>
<asp:BoundColumn DataField="leave_time" HeaderText="请假"/>
<asp:BoundColumn DataField="absent_from_work" HeaderText="旷工"/>
<asp:BoundColumn DataField="later_time" HeaderText="迟到"/>
<asp:BoundColumn DataField="leave_early_time" HeaderText="早退"/>
</Columns>

这是按钮响应代码
private void Button1_Click(object sender, System.EventArgs e)
{
string test = "";
foreach(DataGridItem i in DataGrid1.Items)
{
CheckBox tempchk = (CheckBox)i.FindControl("testchk");
if(tempchk.Checked == true)
{
test = i.Cells[1].Text;
}
}
}
定义的时候CheckBox的ID全都定义成testchk了。
然后我在调试的时候始终看不到test能够取到指定项的值。
什么地方出错了,请各位帮忙,谢谢!
...全文
56 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
memoriccell 2003-09-13
  • 打赏
  • 举报
回复
谢谢,搞定了。
是我把代码放到!Page.isPostBack外面了,导致每次都重新加载,状态都没了。
所以取不到值。
结帖了!
xrll 2003-09-12
  • 打赏
  • 举报
回复
void sb(Object sender, EventArgs E) {
for( int i = 0; i < MyDataGrid.Items.Count; i++ ){
string uid = MyDataGrid.Items[i].UniqueID+":" ;
string bb="";
if(Request.Form[uid+"Check1"]==null)
{
bb = "close"+Request.Form[uid+"rblIndexShow"].ToString();
}
else{
bb = Request.Form[uid+"Check1"].ToString()+Request.Form[uid+"rblIndexShow"].ToString();
}
for(int j = 1; j < MyDataGrid.Columns.Count; j++){
if(j==MyDataGrid.Columns.Count){
}
cc += MyDataGrid.Items[i].Cells[j].Text;
}
......
if(Request.Form[uid+"Check1"]==null)表示未选中
http://218.84.107.5/j.aspx
ych607 2003-09-12
  • 打赏
  • 举报
回复
你在试一下,我试了不会错
wacle 2003-09-12
  • 打赏
  • 举报
回复
sorry,i can't see your problem clearly.
debug your program step by step. in my opion test has got a value.
your method is ok
wacle 2003-09-12
  • 打赏
  • 举报
回复
foreach(datagriditem item in dgrd.items)
{
checkbox chk=(checkbox)item.findcontrol("testchk");
if(chk.checked)
{
...
}
else
{
...
}
}
sweet12345 2003-09-12
  • 打赏
  • 举报
回复
使用findcontrol属性就可以了
fmj1980 2003-09-12
  • 打赏
  • 举报
回复
将 i.FindControl 改成 i.Cells[0].FindControl 试试
cnhgj 2003-09-12
  • 打赏
  • 举报
回复
<asp:BoundColumn DataField="emp_id" HeaderText="员工号" dataformatstring="{0}"/>
seesea125 2003-09-12
  • 打赏
  • 举报
回复
string ch;
foreach(DataGridItem m_item in this.DataGrid1.Items)
{
if(((CheckBox)m_item.Cells[0].FindControl("testchk")).Checked==true)
{
string test=test+","+item.Cells[0].Text;
}
}
zq_hhu 2003-09-12
  • 打赏
  • 举报
回复
http://218.84.107.5/i.aspx
xrll的。

62,046

社区成员

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

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

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

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