2012-09-10 12 views
0

我有一個ListBox,其中的條目數與GridView中的行數匹配。使用這個ListBox我想顯示每行的工具提示只對GridView的第一列數據。我在前端綁定了GridView如何使用列表框爲GridView中的第一列數據分配工具提示

我曾嘗試是給指數超出範圍錯誤的代碼:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      for (int i = 0; i <= GridView1.Rows.Count; i++) 
      { 
       String ProCol = GridView1.Rows[i].Cells[0].ToString(); 

       if (ProCol.Length != 0) 
       { 
        e.Row.Cells[0].ToolTip = ListBox1.Items[i].ToString().Trim(); 
       } 
      } 
     } 
    } 

回答

2

試試你的代碼移動到DataBound事件上GridView,而不是做的工作在RowDataBound。這樣,只有當所有行都被綁定並且GridView.Rows集合已被初始化時,它纔會運行一次。

另外,你應該做什麼Michal Klouda在他的回答中寫道<=<

而且您必須確保ListBox1已綁定GridView之前已被數據綁定。

示例代碼爲您綁定ListBox以前生產GridView應作爲長期工作:

protected void GridView1_DataBound(object sender, EventArgs e) 
{ 
    var gv = (GridView)sender; 
    for (int i = 0; i < gv.Rows.Count; i++) 
    { 
     var oneRow = gv.Rows[i]; 
     String ProCol = oneRow.Cells[0].ToString(); 

     if (ProCol.Length != 0) 
     { 
      oneRow.Cells[0].ToolTip = ListBox1.Items[i].ToString().Trim(); 
     } 
    } 

} 
3

它失敗在你爲週期的最後一次迭代,因爲該指數是基於零(第一項具有0指數,最後一項有count-1索引)。更換

i <= GridView1.Rows.Count 

i < GridView1.Rows.Count 
+0

的GridView1.Rows.Count是0,我和它確實是這樣這裏進入循環。 –

+1

它會進入循環,因爲0 <= 0。無論如何,你需要調查爲什麼你的行數是零。這是一個非常重要的事實,你忘了在問題中提到它。 –

相關問題