2016-04-19 7 views
3

は、だから私は私のマークの上にこれを持って働いていないテーブルをHTMLにアップ:ASP.net C#のGridViewのは

public static string ConvertGVToHTML(GridView gv) 
    { 
     string html = "<table>"; 
     //add header row 
     html += "<tr>"; 
     for (int i = 0; i < gv.Columns.Count; i++) 
      html += "<td>" + gv.Columns[i].HeaderText + "</td>"; 
     html += "</tr>"; 
     //add rows 
     for (int i = 0; i < gv.Rows.Count; i++) 
     { 
      html += "<tr>"; 
      for (int j = 0; j < gv.Columns.Count; j++) 
       html += "<td>" + gv.Rows[i].Cells[j].Text.ToString() + "</td>"; 
      html += "</tr>"; 
     } 
     html += "</table>"; 
     return html; 
    } 

私はstackoverflowの上、ここが見つかりました:私は.csクラスのここ

<asp:GridView ID="GridView1" runat="server" ItemType="IR_InfantRecord.Models.Immunization" DataKeyNames="ImmunizationNumber" SelectMethod="patientImmunGrid_GetData" AutoGenerateColumns="False" 
      ... 
      <Columns> 

       <asp:TemplateField HeaderText="EmpName"> 
        <ItemTemplate> 
        <asp:Label Text="<%# Item.Emp.EmpName%>" 
         runat="server" /> 
        </ItemTemplate> 
       </asp:TemplateField> 

       <asp:TemplateField HeaderText="Check"> 
        <ItemTemplate> 
        <asp:Label Text="<%# Item.Emp.Check%>" 
         runat="server" /> 
        </ItemTemplate> 
       </asp:TemplateField> 

       <asp:DynamicField DataField="Status" /> 
       <asp:DynamicField DataField="DateTaken" />    

      ... 
     </asp:GridView> 

と、ヘッダーは正常に動作しますが、行はnullを返しています。私はITextSharpを使ってpdfにgridviewを印刷するためにこれを使っています。

このメソッドは他のグリッドビューでも機能します。私はなぜこの特定のgvでnullを返すのか知りません。ラベル付きTemplateFieldについて

+0

グリッドビューに行がありますか? –

答えて

3

、値がセル・テキストではなく、(リテラル制御した後、セルの第2の制御である)Labelコントロールではない:

for (int i = 0; i < gv.Rows.Count; i++) 
{ 
    html += "<tr>"; 

    for (int j = 0; j < gv.Columns.Count; j++) 
    { 
     TableCell cell = gv.Rows[i].Cells[j]; 

     html += "<td>"; 

     if (cell.Controls.Count > 1 && cell.Controls[1] is Label) 
     { 
      Label lblValue = cell.Controls[1] as Label; 
      html += lblValue.Text; 
     } 
     else 
     { 
      html += cell.Text; 
     } 

     html += "</td>"; 
    } 

    html += "</tr>"; 
} 

ところで私はあなたのコードに示されているように文字列連結技法を保っていましたが、StringBuilderを使用することが望ましいでしょう。

+0

ありがとう!これはうまくいった!私はを追加しました。ありがとうございました! – Katherine

+0

あなたは大歓迎です!申し訳ありませんが、あなたの編集内容が「保留中」であることに気付く前に、「tr」タグを修正しました(誰かが自分の回答を初めて編集する)。 – ConnorsFan

+0

大丈夫です!ありがとうございました!! – Katherine