GridView中怎么用checkbox
比如一张表,一列是ID,一列是name,ID那行用checkbox显示,表格下面有一个删除按钮,选中一个checkbox就删除一条记录,还有下面还有一个checkbox用...
比如一张表,一列是ID,一列是name,ID那行用checkbox显示,表格下面有一个删除按钮,选中一个checkbox就删除一条记录,还有下面还有一个checkbox用于全选,怎么实现的。。。。解决后追加30分,谢谢
展开
展开全部
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); //即可取出主键然就进行删除
}
}
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];
}
}
参考下面一段代码:
foreach(GridViewRow row in GridView1.Rows){
CheckBox cb = row.FindControl("checkboxid") as CheckBox;
if (cb != null && cb.Checked){
// 获取主键
Object key = GridView.DataKeys[row.RowIndex];
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询