【发布时间】:2014-10-22 15:32:36
【问题描述】:
希望有人能帮我解决这个问题。我有一个具有 x 行数的 GridView,每行有 4 列,由 3 个 DropDownLists 和一个标签组成,用于保存 3 个 DropDownLists 的选定值的总和。我的问题是我该如何做到这一点?我已经为 DropDownLists 尝试了 SelectedIndexChanged 路由,但没有得到我想要的结果。这些值不是被添加,而是被下一个选择覆盖。我究竟做错了什么?到目前为止,这是我所拥有的:
protected void ddlSelectedIndexChanged(object sender, EventArgs e)
{
foreach (GridViewRow row in gvStuRoster.Rows)
{
double scores = 0;
DropDownList ddlFocus = (DropDownList)row.FindControl("ddlFocus");
DropDownList ddlEvidence = (DropDownList)row.FindControl("ddlEvidence");
DropDownList ddlConventions = (DropDownList)row.FindControl("ddlConventions");
//DropDownList ddlScores = (DropDownList)row.FindControl("ddlScores");
Label lblScores = (Label)row.FindControl("lblScores");
if (ddlFocus.SelectedIndex > 0 && ddlFocus.SelectedValue != "-1")
{
scores += Convert.ToDouble(ddlFocus.SelectedValue);
}
else if (ddlFocus.SelectedValue == "-1")
{
scores = -1;
}
if (ddlEvidence.SelectedIndex > 0 && ddlEvidence.SelectedValue != "-1")
{
scores += Convert.ToDouble(ddlEvidence.SelectedValue);
}
else if (ddlEvidence.SelectedValue == "-1")
{
scores = -1;
}
if (ddlConventions.SelectedIndex > 0 && ddlConventions.SelectedValue != "-1")
{
scores += Convert.ToDouble(ddlConventions.SelectedValue);
}
else if (ddlConventions.SelectedValue == "-1")
{
scores = -1;
}
lblScores.Text = scores == -1 ? "" : Convert.ToString(scores);
}
}
更新
在将scores 和lblScores 标签移入内部后,一切都按预期工作,除了在任何 DropDownList 的第一个选择中,除了同一行中的那个之外,所有其他 Labels 值在GridView 设置为 0。为什么会这样?
提前感谢您的帮助!
【问题讨论】: