在学生评价老师的评价页面中,有一个GridView,用户显示评价标准,以及依据标准打分。
字段大体是这样的:
评价项目编号 评价项目内容 分数 最低分 最高分
001 认真负责 【此处一个下拉列表】 0 5
其中,最大值依评价项目不同而变化,5,10,15不等。 问题1:想在下拉列表显示从0到最高分的选项,是否合理?
问题2:如何取得当前行的行号?因为不同的行,最高分不同。
如果e.Row.RowIndex 代表当前行,Cell[7]是最高分所在的列(Cell[0]是第一列),
为什么语句:
Response.Write(GridView1.Rows[e.Row.RowIndex].Cells[7].Text);
显示错误:索引超出范围。必须为非负值并小于集合大小。
改成
Response.Write(GridView1.Rows[0].Cells[7].Text);也是一样的错误。语句是在以下代码中执行的,
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow || e.Row.RowType == DataControlRowType.Separator)
{
DropDownList dp = (DropDownList)e.Row.FindControl("DropDownList1");
//得到了这行的DropDownList,在这里绑定吧
Response.Write(GridView1.Rows[0].Cells[7].Text);
}
}
字段大体是这样的:
评价项目编号 评价项目内容 分数 最低分 最高分
001 认真负责 【此处一个下拉列表】 0 5
其中,最大值依评价项目不同而变化,5,10,15不等。 问题1:想在下拉列表显示从0到最高分的选项,是否合理?
问题2:如何取得当前行的行号?因为不同的行,最高分不同。
如果e.Row.RowIndex 代表当前行,Cell[7]是最高分所在的列(Cell[0]是第一列),
为什么语句:
Response.Write(GridView1.Rows[e.Row.RowIndex].Cells[7].Text);
显示错误:索引超出范围。必须为非负值并小于集合大小。
改成
Response.Write(GridView1.Rows[0].Cells[7].Text);也是一样的错误。语句是在以下代码中执行的,
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow || e.Row.RowType == DataControlRowType.Separator)
{
DropDownList dp = (DropDownList)e.Row.FindControl("DropDownList1");
//得到了这行的DropDownList,在这里绑定吧
Response.Write(GridView1.Rows[0].Cells[7].Text);
}
}
if (e.Row.RowType == DataControlRowType.DataRow || e.Row.RowType == DataControlRowType.Separator)
===》
if (e.Row.RowType == DataControlRowType.DataRow) 1.合理
DropDownList dp = (DropDownList)e.Row.FindControl("DropDownList1");
dp.Items.Add("1");
dp.Items.Add("1");2.e.Row.RowIndex
dp.Items.Add(new ListItem("",""));
是否有7列
我怎么样获取不同行的最高分值呢?
执行Response.Write(e.Row.RowIndex.ToString());
输出
0123456789101112
我该怎样取出每一行第8列的值(最高分)然后把从0到最高分加入下拉列表呢?
int Num=Convert.ToInt32(GridView1.Rows[e.Row.RowIndex].Cells["最高分的字段名"].Text);
for(int i=Num;i>=0;i++)
dp.Items.Add(i.ToString(),i.ToString());
哪里出错了呢?
for (int i = Num; i >= 0; i--)
dp.Items.Add(new ListItem(i.ToString(), i.ToString()));