为什么e.Row.Cells [2] .Text总是在GridView1_RowDataBound事件中显示“”或null

时间:2013-03-08 05:46:28

标签: c# asp.net gridview

这是我的代码

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow) {
        // DataRow data = ((DataRowView)e.Row.DataItem).Row;
        string ToolTipString = Convert.ToString(e.Row.Cells[2].Text);
        e.Row.Cells[2].Attributes.Add("title", ToolTipString);
        Label MyLabel = (Label)e.Row.FindControl("MyLabel");

        if (ToolTipString.Length < 20) {
            MyLabel.Text = ToolTipString;
        }
        else {
            MyLabel.Text = String.Format("{0}...", ToolTipString.Substring(0, 17));
            MyLabel.ToolTip = ToolTipString;
        }
    }
}

Convert.ToString(e.Row.Cells[2].Text);总是给我“”。我的代码有什么问题吗?

2 个答案:

答案 0 :(得分:4)

请使用此代码

var ToolTipString = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "Column"));

答案 1 :(得分:2)

通常,当列隐藏在网格上时会发生此问题。解决它的两个步骤,

  1. 而不是使用Visible =&#34; false&#34;像这样使用css类作为绑定字段,ItemStyle-CssClass =&#34; Column_Hide&#34;

  2. 在css文件中创建Column_Hide,

    .Column_Hide
     {
        display: none;
     }
    
  3. 希望你的问题能够得到解决