asp.net
のCheckBox
にgridview
列を追加し、複数の値を取得することに関して、いくつか質問があります。まず、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>
最初に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
}
}