我有几个问题,它涉及在asp.net中向gridview添加CheckBox列并获取多个值.首先,我看到每个人都将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来实现这一点.任何想法我如何添加这个并获得可以选择的多行.先感谢您.
<asp:TemplateField> <ItemTemplate> <asp:CheckBox ID="SelectCheckBox" runat="server" OnCheckedChanged="SelectCheckBox_OnCheckedChanged"/> </ItemTemplate> </asp:TemplateField>
解决方法
首先,您必须将autopostback属性设置为true:
<asp:CheckBox ID="SelectCheckBox" runat="server" AutoPostBack="true" OnCheckedChanged="SelectCheckBox_OnCheckedChanged"/>
在您的情况下,GridIn发送SelectedIndexChanged.对于checkBox事件,您必须使用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 } }