2016-08-23 7 views
-2

グリッドビューをExcelに書き出す際にリテラルコントロールのテキスト値を取得するにはどうしたらうまくいかないのですか?C#Cell LiteralControl Get Text値

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

何が起こっているのですか?nullとしてリテラルコントロールを取得していますか?またはTextプロパティが空の文字列ですか? cell.Controls [0]はリテラルコントロールですか?タイプを調べて確認しましたか? –

答えて

2

Asp.Netは、あなたの代わりにあなたのコントロールを参照しているので、

を使用してみてください、間隔または何らかの理由でGridViewのテンプレートフィールドにはデフォルトでLiteralControlを追加します
cell.Controls[1] 

代わりの

cell.Controls[0] 
LiteralControlの場合は

です。

可能であれば、コントロールにIDを割り当てて、そのIDを使用することもできます。この場合、誤った要素を参照するというこの問題は、特定のIDで制御を参照するために現れません。

+0

これは機能しました:case "LiteralControl": cell.Text =(cell.Controls [1]としてHyperLink)。 cell.Controls.Clear(); 休憩。 – PigsIncorporated