2017-08-30 4 views
1

Ich versuche, eine Tooltip in jeder Zeile eines Rasters zu verwenden, um Details anzuzeigen, wann immer Benutzer den Zeiger auf eine bestimmte Zelle platzieren. Es soll Details für jede Zeile anzeigen, zeigt aber nur Details für die erste Zeile. Kann mir jemand helfen?So lesen Sie jede Zeile des Rasters

for (int i = 1; i <= e.Row.Cells.Count - 1; i++) 
{ 
    if (e.Row.Cells[i].Text == "0" || string.IsNullOrEmpty(e.Row.Cells[i].Text) || e.Row.Cells[i].Text == "&nbsp;") 
    { 
     e.Row.Cells[i].Text = ""; 
    } 
    else 
    { 
     e.Row.Cells[i].BackColor = System.Drawing.Color.Blue; 

     dateSetExport.Tables.Clear(); 
     dateSetExport.Reset(); 
     SqlParameter[] param = new SqlParameter[2]; 
     param[1] = new SqlParameter("@Startdate", gvDetails.HeaderRow.Cells[i].Text); 
     param[0] = new SqlParameter("@Employe_Id", e.Row.Cells[0].Text.Split('-')[0]); 
     DataTable dt1 = DataHelper.getDataTableExecuteSP("usp_GetToolTip", param); 
     dt1.TableName = "ToolTip"; 
     dateSetExport.Tables.Add(dt1); 
     string tooltip = ""; 
     for (int j = 0; j < dt1.Rows.Count; j++) 
     { 
      tooltip = tooltip + dt1.Rows[j]["normal_working_hours"].ToString() + " Hours : " + dt1.Rows[j]["description"].ToString()+"\n\n"; 
     } 
     e.Row.Cells[i].ToolTip = tooltip; 
    } 
} 
+0

Welche Raster Ereignis erstellen Sie die Tooltips ? –

+0

tooltip = tooltip + dt1.Rows [j] ["normal_working_hours"]. ToString() + "Stunden:" + dt1.Rows [j] ["description"]. ToString() + "\ n \ n"; Beschreibung bekommen zusammen mit der Stunde – vicky

Antwort

0

Sie einen anderen foreach, um alle Zeilen in einer Schleife verwenden können:

foreach (GridViewRow row in GridView.Rows) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     //do your staff 
    } 
} 

Aber für mich, sollten Sie GridView_RowDataBound Ereignis verwenden:

protected void GridView_RowDataBound(Object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     for (int i = 1; i <= e.Row.Cells.Count - 1; i++) 
     { 
     if (e.Row.Cells[i].Text == "0" || string.IsNullOrEmpty(e.Row.Cells [i].Text) || e.Row.Cells[i].Text == "&nbsp;") 
     { 
    e.Row.Cells[i].Text = ""; 
      } 
    else 
    { 
     e.Row.Cells[i].BackColor = System.Drawing.Color.Blue; 

     dateSetExport.Tables.Clear(); 
     dateSetExport.Reset(); 
     SqlParameter[] param = new SqlParameter[2]; 
     param[1] = new SqlParameter("@Startdate", gvDetails.HeaderRow.Cells[i].Text); 
     param[0] = new SqlParameter("@Employe_Id", e.Row.Cells[0].Text.Split('-')[0]); 
     DataTable dt1 = DataHelper.getDataTableExecuteSP("usp_GetToolTip", param); 
     dt1.TableName = "ToolTip"; 
     dateSetExport.Tables.Add(dt1); 
     string tooltip = ""; 
     for (int j = 0; j < dt1.Rows.Count; j++) 
     { 
     tooltip = tooltip + dt1.Rows[j]["normal_working_hours"].ToString() + " Hours : " + dt1.Rows[j]["description"].ToString()+"\n\n"; 
     }`enter code here` 
     e.Row.Cells[i].ToolTip = tooltip; 
     } 
    } 
    } 
    } 
+0

Ich verwende RowDataBound-Ereignis – vicky

+0

Schlägt es das Ereignis für jede Zeile oder nur einmal? –

+0

nicht für jede Zeile, sondern für die erste Zeile – vicky

Verwandte Themen