2014-03-07 68 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代碼可能存在問題嗎? –