我有一个包含数据的列gridview。我想将gridview的每一行上的数据映射到标签控件。但是在执行代码时我有一个ArgumenyOutOfRange异常。请查看下面的代码块以了解我的概念。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
gvSurveyResult.DataSource = getStatusTable();
gvSurveyResult.DataBind();
gvSurveyResult.Visible = true;
foreach (GridViewRow myRow in gvSurveyResult.Rows)
{
for (int i = 1; i <= gvSurveyResult.Rows.Count; i++)
{
Label lblResults = new Label();
lblResults = ((Label)ResultsPanel.FindControl("lblResult" + i +".Text"));
String gvCellText = myRow.Cells[i].Text;
lblResults.Text = gvCellText;
}
}
}
}
我觉得lblResults.Text没有得到myRow.Cells [i] .Text传递给它的值
我需要从One列gridview中获取结果,然后将它们映射到页面上的标签。谢谢你们一直在那里。
Guzzyman。
答案 0 :(得分:0)
您需要在行数据绑定事件上编写代码。
那应该如下
protected void GridView1_DataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
//Label lblResults = new Label();
//lblResults = ((Label)ResultsPanel.FindControl("lblResult" + i +".Text"));
//String gvCellText = myRow.Cells[i].Text;
//lblResults.Text = gvCellText;
}
}
答案 1 :(得分:0)
两件事
gvSurveyResult.Rows
只返回Data
- 行,而不是标题)Columns
这应该起作用(尽管对我来说没有多大意义):
foreach (GridViewRow myRow in gvSurveyResult.Rows)
{
for (int i = 1; i < gvSurveyResult.Columns.Count; i++)
{
string labelID = string.Format("lblResult{0}", i);
Label lblResults = ((Label)ResultsPanel.FindControl(labelID);
String gvCellText = myRow.Cells[i].Text;
lblResults.Text = gvCellText;
}
}
但我会使用RowDataBound
事件而不是这个循环。