これを解決するにはいくつかの助けが必要です。asp.net gridviewチェックボックスの選択
私は、GridViewコントロールを持っているし、GridViewの内側に私はチェックボックスがあり、チェックボックスをクリックした後、私はポストバックイベントをやって唯一のデータベースに、この特定の行を更新しようとしています。
これは私のgridviewチェックボックスのコードです。 OnCheckedChangedを参照してください。
<asp:TemplateField HeaderText="Sample">
<ItemTemplate>
<asp:CheckBox runat="server"
ID="chkSample"
Checked='<%# Bind("Sample") %>'
OnCheckedChanged="UpdateSupplyLed"
AutoPostBack="True">
</asp:CheckBox>
</ItemTemplate>
</asp:TemplateField>
コード:
protected void UpdateSupplyLed(object sender, EventArgs e)
{
foreach (GridViewRow di in SamplingGridView.Rows)
{
CheckBox chkBx = (CheckBox)di.FindControl("chkSample");
if (chkBx != null && chkBx.Checked)
{
//update database logic here.
}
}
}
上記のコードは正常に動作しますが、それは私がちょうどチェックし1のirresepectiveにチェックされているすべてのチェックボックスを得ています。私はそれらのすべてを望んでいません。
は、どのように私はチェックされているだけで1行の値を取得することができます。レコードのステータスがtrueで、レコードを更新したくないため、行の一部がすでにチェックされている可能性があります。
私は私の質問が正しいと思います!
更新:答えは次のとおりです。
protected void UpdateSupplyLed(object sender, EventArgs e)
{
CheckBox chkSampleStatus = sender as CheckBox;
bool sample = chkSampleStatus.Checked;
GridViewRow row = chkSampleStatus.NamingContainer as GridViewRow;
TextBox txtId = row.FindControl("Id") as TextBox;
int id = Int32.Parse(txtId.Text);
}
に動作していない上記の場合にも、これを試してみてくださいは、あなたの答えをいただき、ありがとうございます。しかし、同じ行から別の値が必要なので、その特定のgridview行の行IDを取得するにはどうすればよいですか。私はレコードのIDを得ることができるように。 – Supremestar
は、それから私は、チェックボックスのOnCheckChangedは、GridViewsを使用OnRowCommand代わりに、行がGridVieweCommandEventArgsに私はGridViewの行のコマンドが発射されていないGridViewの中でSELECTコマンドのフィールドを持っていない –
HollyStylesを、供給されている結合しないことをお勧めします。私の友達はどうすればいいですか? 助けてください。 – Supremestar