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

时间:2014-03-07 14:19:38

标签: c# asp.net gridview checkbox

我有几个问题,它涉及在CheckBox中向gridview添加asp.net列并获取多个值。首先,我看到每个人都将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 个答案:

答案 0 :(得分:10)

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

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

在您的情况下,gridview会发送SelectedIndexChanged。对于复选框事件,您必须使用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
    }
}