C#Cell LiteralControl获取文本值

时间:2016-08-23 14:23:57

标签: c# asp.net

为什么在将gridview导出到Excel时获取文字控件的文本值不起作用?

cell.Text = (cell.Controls[0] as LiteralControl).Text;

编辑:(完整代码)

                    if (cell.HasControls())
                {

                    switch (cell.Controls[0].GetType().Name)
                    {
                        case "HyperLink":
                    cell.Text = (cell.Controls[0] as HyperLink).Text;
                    cell.Controls.Clear();
                    cell.ForeColor = System.Drawing.ColorTranslator.FromHtml("#000000");
                    break;
                        case "LinkButton":
                    cell.Text = (cell.Controls[0] as LinkButton).Text;
                    cell.Controls.Clear();
                    cell.ForeColor = System.Drawing.ColorTranslator.FromHtml("#000000");
                    break;
                        case "LiteralControl":
                    cell.Text = (cell.Controls[0] as LiteralControl).Text;
                    cell.Controls.Clear();
                    cell.ForeColor = System.Drawing.ColorTranslator.FromHtml("#000000");
                    break;
                    }

                    //cell.Text = cell.Controls[0].GetType().Name;


                }

1 个答案:

答案 0 :(得分:2)

Asp.Net默认情况下在gridview模板字段中添加LiteralControl以获取间距或任何原因,因此您引用的是该控件而不是您的控件,请尝试使用

cell.Controls[1] 

而不是

cell.Controls[0] 

在LiteralControl的情况下。

如果可能的话,您可以为控件分配ID并使用这些ID,在这种情况下,引用错误元素的问题将不会浮出水面,因为您将使用其特定ID引用控件。