web-dev-qa-db-ja.com

チェックボックス列をasp.netグリッドビューに追加する

asp.netCheckBoxgridview列を追加し、複数の値を取得することに関して、いくつか質問があります。まず、aspxページにOnCheckedChanged="chkview_CheckedChanged"を追加している人がいますが、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>
7
Kpt.Khaos

最初にautopostback属性を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
    }
}
11
Plue