2016-08-23 85 views
-2

这是怎么得到一个gridview到Excel导出的literalcontrol的文本值?C#单元格LiteralControl获取文本值

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; 


       } 
+0

我运行了导出并添加了单元格中的控件类型。超链接的工作,我能够得到的文字和去除控制。具有LiteralControls的单元格无法读取控件文本。 – PigsIncorporated

+0

添加更多适当的标签。看起来像asp.net问题 – Versatile

+0

发生了什么是你把字面控制为空或文本属性是一个空字符串?你确定cell.Controls [0]是文字控制吗?你是否检查过它的类型? –

回答

2

Asp.Net增加LiteralControl默认情况下在GridView的模板字段间距或不管什么原因,让你指的是控制,而不是您,请尝试使用

cell.Controls[1] 

,而不是

cell.Controls[0] 
在LiteralControl的情况下为

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

+0

这工作:case“LiteralControl”: cell.Text =(cell.Controls [1] as HyperLink).Text; cell.Controls.Clear(); 休息; – PigsIncorporated