在学生评价老师的评价页面中,有一个GridView,用户显示评价标准,以及依据标准打分。
字段大体是这样的:
评价项目编号 评价项目内容 分数 最低分 最高分
001 认真负责 【此处一个下拉列表】 0 5
其中,最大值依评价项目不同而变化,5,10,15不等。现在已经实现了下拉列表中显示根据每一行的最高分决定的由高到低显示的分数列表。
问题是,怎样计算选定项的分数之和?
我根据网上的解答,实验如下代码,Response什么也没返回啊,想来应该显示最后一个选择行的分数的。请大家帮忙看一下吧!
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
int i = Convert.ToInt32(e.RowIndex);
string ID = GridView1.Rows[i].Cells[5].Text.ToString(); //得到GridView第i行第一列的文本
string score = ((DropDownList)GridView1.Rows[i].FindControl("DropDownList1")).SelectedItem.ToString();
GridView1.EditIndex = -1;
Response.Write(score);
}
字段大体是这样的:
评价项目编号 评价项目内容 分数 最低分 最高分
001 认真负责 【此处一个下拉列表】 0 5
其中,最大值依评价项目不同而变化,5,10,15不等。现在已经实现了下拉列表中显示根据每一行的最高分决定的由高到低显示的分数列表。
问题是,怎样计算选定项的分数之和?
我根据网上的解答,实验如下代码,Response什么也没返回啊,想来应该显示最后一个选择行的分数的。请大家帮忙看一下吧!
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
int i = Convert.ToInt32(e.RowIndex);
string ID = GridView1.Rows[i].Cells[5].Text.ToString(); //得到GridView第i行第一列的文本
string score = ((DropDownList)GridView1.Rows[i].FindControl("DropDownList1")).SelectedItem.ToString();
GridView1.EditIndex = -1;
Response.Write(score);
}
在什么对象的什么事件中才能访问并且相加呢?
提交按钮可以访问DropDownList的值吗?
int score=0;
for(int i=0;i<GridView1.Rows.Count;i++)
{
score += Convert.ToInt16(((DropDownList)GridView1.Rows[i].Cells[列号].FindControl("DropDownList1")).SelectedItem);
}
Response.Write(score.ToString());
不过有一点改动:
protected void Button1_Click(object sender, EventArgs e)
{
int score = 0;
for (int i = 0; i < GridView1.Rows.Count; i++)
{
// score += Convert.ToInt16(((DropDownList)GridView1.Rows[i].Cells[5].FindControl("DropDownList1")).SelectedItem);
这句出现错误提示:
无法将类型为“System.Web.UI.WebControls.ListItem”的对象强制转换为类型“System.IConvertible”。 改为下面这样就可以了,算的太对了!
DropDownList dp =(DropDownList)GridView1.Rows[i].Cells[5].FindControl("DropDownList1");
score += Convert.ToInt32(dp.SelectedValue);
}
Response.Write(score.ToString());
}