GridView中怎么用checkbox

比如一张表,一列是ID,一列是name,ID那行用checkbox显示,表格下面有一个删除按钮,选中一个checkbox就删除一条记录,还有下面还有一个checkbox用... 比如一张表,一列是ID,一列是name,ID那行用checkbox显示,表格下面有一个删除按钮,选中一个checkbox就删除一条记录,还有下面还有一个checkbox用于全选,怎么实现的。。。。解决后追加30分,谢谢 展开
 我来答
rainingheart
2008-06-05 · TA获得超过509个赞
知道小有建树答主
回答量:490
采纳率:0%
帮助的人:0
展开全部
1.aspx页面中
1.为gridview增加一个模板列

<asp:TemplateField>
<HeaderTemplate>
<asp:CheckBox ID="CHKAll" runat="server" onclick="selectAll(this);" Text="选择" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="ChkSelectOne" runat="server" />
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" Width="70px" />
<HeaderStyle HorizontalAlign="Center" />
</asp:TemplateField>

2.加入script.
<script language="javascript" type="text/javascript">
function selectAll(obj)
{
theTable = obj.parentElement.parentElement.parentElement;
i;
j = obj.parentElement.cellIndex;

for(i=0;i<theTable.rows.length;i++)
{
objCheckBox = theTable.rows[i].cells[j].firstChild;
if(objCheckBox.checked!=null)objCheckBox.checked = obj.checked;
}
}
</script>

2.cs文件中
1.定义一个 你主键集合(如我的是Seq)
/// <summary>
/// 获取或设置选中项的集合(记录Seq)
/// </summary>
protected ArrayList SelectedSeqItems
{
get
{
return (ViewState["SelectedSeqItems"] != null) ? (ArrayList)ViewState["SelectedSeqItems"] : null;
}
set
{
ViewState["SelectedSeqItems"] = value;
}
}

2.定义一个收集主键函数
/// <summary>
/// 从当前页收集选中项的情况Seq
/// </summary>
protected void CollectSelectedSeq()
{
ArrayList SelectedSeqItems = null;

if (this.SelectedSeqItems == null)
SelectedSeqItems = new ArrayList();
else

SelectedSeqItems = this.SelectedSeqItems;

for (int i = 0; i < this.GVDetail.Rows.Count; i++)
{
string Seq = this.GVDetail.Rows[i].Cells[1].Text;
CheckBox cb = this.GVDetail.Rows[i].FindControl("ChkSelectOne") as CheckBox;
if (SelectedSeqItems.Contains(Seq) && !cb.Checked)
SelectedSeqItems.Remove(Seq);
if (!SelectedSeqItems.Contains(Seq) && cb.Checked)
SelectedSeqItems.Add(Seq);
}
this.SelectedSeqItems = SelectedSeqItems;
}

3.删除前先调用上面的收集函数
后遍历收集到的集合

protected void BtConfirmDel_Click(object sender, EventArgs e)
{

CollectSelectedSeq();

foreach (object tmp in this.SelectedSeqItems)
{
Seq = Convert.ToInt16(tmp); //即可取出主键然就进行删除

}

}
匿名用户
2015-07-08
展开全部
  提交结果后遍历GridView, 通过FindControl找到CheckBox判断该行是否选中,然后根据DataKey获取出主键值(但前提是必须在绑定前把GridView的DataKeyNames指定为主键的名称)。
  参考下面一段代码:
  foreach(GridViewRow row in GridView1.Rows){

  CheckBox cb = row.FindControl("checkboxid") as CheckBox;
  if (cb != null && cb.Checked){
  // 获取主键
  Object key = GridView.DataKeys[row.RowIndex];
  }
  }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式