2014-03-07 118 views
6

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

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> 

回答

9

首先,你必须设置自动回属性为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 
    } 
} 
+0

,没有填充文本框 –

+0

我也把断点在OnCheckedChanged事件和检查它没有中断。 –

+0

发布asp代码可能存在问题吗? –