【发布时间】:2016-08-30 22:40:31
【问题描述】:
我正在使用 foreach 循环从网格视图中获取复选框的值,并通过在复选框 CheckedChanged 事件上获取当前用户 regID 来更新记录。
在 ASPX 中
<Columns>
<asp:TemplateField >
<ItemTemplate>
<asp:CheckBox ID="cbPaid" runat="server" AutoPostBack="true" OnCheckedChanged="cbPaid_CheckedChanged" Checked='<%# bool.Parse(Eval("status").ToString() == "Paid" ? "True": "False") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
在aspx.cs
protected void cbPaid_CheckedChanged(object sender, EventArgs e)
{
foreach (GridViewRow row in GdParticipants.Rows)
{
CheckBox cbPaid = (CheckBox)row.FindControl("cbPaid");
if (cbPaid!=null && cbPaid.Checked == true)
{
string status = "Paid";
int amount = Convert.ToInt32(ViewState["EventFee"]);
DateTime date = DateTime.Now;
string user = Session["user_id"].ToString();
string regID = row.Cells[2].Text;
string type = "Deposit";
string account = "Participation";
int balance = BAL.fetch_availableBalance();
int total_balance = amount + balance;
string detail = "Participant: "+regID+" fee has been Recieved";
BAL.updateParticipants(regID, status, amount, user, date);
BAL.saveBudgetTracking(type,account,amount,0,total_balance,detail,date);
}
}
Response.Redirect("~/show_members.aspx");
}
这种方法的问题是,每当新用户通过选中复选框更新新记录时,它将循环遍历整个记录并更新所有先前记录的当前更改。
请指导我如何从选中复选框的行和checkbox-CheckedChanged事件上的复选框值中仅获取当前的regID,而不是循环?
【问题讨论】:
标签: c# asp.net checkbox datagridview