我有几个问题,它涉及在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>
答案 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
}
}