将复选框列添加到 asp.net gridview

Posted

技术标签:

【中文标题】将复选框列添加到 asp.net gridview【英文标题】:Adding a checkbox column to asp.net gridview 【发布时间】:2014-04-10 17:57:12 【问题描述】:

关于在asp.net 中将CheckBox 列添加到gridview 并获取多个值时,我有几个问题。首先,我看到每个人都将OnCheckedChanged="chkview_CheckedChanged" 添加到他们的aspx 页面,但是当您单击CheckBox 设置其操作时,它不会打开OnCheckedChanged="chkview_CheckedChanged"。它会打开 SelectedIndexChanged 事件。我想要做的是当他们选择CheckBox 时,它会将相应的行信息添加到TextBox。这是我目前用来设置值的内容。如何改用选定的CheckBox

protected void dropGridView_SelectedIndexChanged1(object sender, EventArgs e)

    GridViewRow row = dropdeadGridView.SelectedRow;
    IDTextBox.Text = row.Cells[1].Text;
    loadnumTextBox.Text = row.Cells[2].Text;

完成此操作后,您如何才能到达将检查每一行的位置,而不仅仅是我当前的问题。我正在寻找一种选择多行并具有选择按钮的方法。我已经做了很多寻找,但什么也找不到,所以我试图用CheckBoxes 来代替它。任何想法我可以如何添加它并获得可以选择的多行。提前谢谢你。

这是我的编辑* 发布 CheckBox 列的 asp 代码:

<asp:TemplateField>
            <ItemTemplate>
                <asp:CheckBox ID="SelectCheckBox" runat="server" OnCheckedChanged="SelectCheckBox_OnCheckedChanged"/>
            </ItemTemplate>
        </asp:TemplateField>

【问题讨论】:

【参考方案1】:

首先你必须将 autopostback 属性设置为 true :

<asp:CheckBox ID="SelectCheckBox" runat="server" AutoPostBack="true" 
              OnCheckedChanged="SelectCheckBox_OnCheckedChanged"/>

在您的情况下,SelectedIndexChanged 是由 gridview 发送的。对于复选框事件,您必须使用 OnCheckedChanged 事件:

protected void SelectCheckBox_OnCheckedChanged(object sender, EventArgs e)

    CheckBox chk = sender as CheckBox ;

    if(chk.Checked)
    
        GridViewRow row = (GridViewRow)chk.NamingContainer;
        IDTextBox.Text = row.Cells[1].Text;
        loadnumTextBox.Text = row.Cells[2].Text;
    

如果你想遍历所有选中的复选框:

var rows = dropdeadGridView.Rows;
int count = dropdeadGridView.Rows.Count;
for (int i = 0; i < count; i++)

    bool isChecked = ((CheckBox)rows[i].FindControl("chkBox")).Checked;
    if(isChecked)
    
        //Do what you want
    

【讨论】:

它没有填充文本框 我还在 OnCheckedChanged 事件上设置了断点,并且在检查时它不会中断。 我正要问 =) 仍然没有显示记录会不会是 selectedindexchanged 搞砸了? 在您的循环推荐中......它可以在一行中完成。每个都更容易使用。 foreach (GridViewRow gvr in GridView1.Rows) 而不是 var rows = dropdeadGridView.Rows; int count = dropdeadGridView.Rows.Count; for (int i = 0; i

以上是关于将复选框列添加到 asp.net gridview的主要内容,如果未能解决你的问题,请参考以下文章

ASP:带有分页的 Gridview 复选框列未显示选中了哪个复选框

asp.net动态添加GridView的模板列,并获取列值

当用户在 GridView ASP.NET 中选择一行时如何自动选择相同 ID 的其他行

使用 JQuery 在 GridView ASP.NET 中选择所有复选框

通过asp.net中的数据表在asp gridview中添加按钮列

ASP.NET Gridview 与动态网格上的链接按钮列