为什么在将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;
}
答案 0 :(得分:2)
Asp.Net默认情况下在gridview模板字段中添加LiteralControl以获取间距或任何原因,因此您引用的是该控件而不是您的控件,请尝试使用
cell.Controls[1]
而不是
cell.Controls[0]
在LiteralControl的情况下。
如果可能的话,您可以为控件分配ID并使用这些ID,在这种情况下,引用错误元素的问题将不会浮出水面,因为您将使用其特定ID引用控件。