2011-06-23 22 views
0

ご挨拶スマートな人たちがstackoverflow!私は、次のItemTemplateにasp.net listview control - itemtemplateの動的列を使用

<ItemTemplate> 
    <tr> 
<td><%#Eval("abc_availablearea").ToString()%>&nbsp;</td> 
<td><%#Eval("abc_classname").ToString() %>&nbsp;</td> 
<td><%#Eval("abc_division").ToString() %>&nbsp;</td> 
<td><%#Eval("abc_managername").ToString() %>&nbsp;</td> 
    </tr> 
</ItemTemplate> 

は、今私はそう...ダイナミックなフィールド名を使用するように

<ItemTemplate> 
    <tr> 
<td><%#Eval(fieldOne).ToString()%>&nbsp;</td> 
<td><%#Eval(fieldTwo).ToString() %>&nbsp;</td> 
<td><%#Eval(fieldThree).ToString() %>&nbsp;</td> 
<td><%#Eval(fieldFour).ToString() %>&nbsp;</td> 
    </tr> 
</ItemTemplate> 

ような何かをしようとしています。しかし、それは私のために働いていないと、このリストビューを持っています。誰でもこれを行う方法についてのアイデアはありますか?ご協力いただきありがとうございます。

+0

ItemDataBoundイベントに

は、このような何かを行います。 – Lucian

+0

「作業していません」と言ったときにエラーメッセージが表示されますか? –

+0

Al ...基本的にエラーは、どのようなfieldOneなどが – DevilCode

答えて

0

ItemTemplateを動的に作成する必要があります。 Creating Web Server Control Templates Programmatically

+0

Alison、そのリンクはDataGridコントロール用ですが、Listviewで動作する可能性はありません。ありがとうございます。 – DevilCode

+0

@DevilCode:正しい。それは同じ考えです。プログラムでフィールドを同様の方法でバインドする必要があります。あなたは少しの検索の後でいくつかのサンプルコードをオンラインで見つけることができるはずです。 –

0

私はそれに投稿を書いた:http://start-coding.blogspot.com/2013/06/dynamic-columns-in-listview.html。それは、よりクリーンで保守が容易になるだろう、あなたはItemDataBoundイベントでの背後にあるコードから動的なフィールドを追加しようとすることができ

private void dynamicPopulateRow(HtmlTableRow row, System.Data.DataRowView drv, int iGeneration) 
    { 
     if (row != null) 
     { 
      // http://www.pcreview.co.uk/forums/do-enumerate-all-columns-dataviewrow-t1244448.html 
      foreach (DataColumn dc in drv.Row.Table.Columns) 
      { 
       string sEmployeeID = drv["LoginID"].ToString(); 

       if (dc.ColumnName.Equals("LoginID")) 
       { 
        // http://msdn.microsoft.com/en-US/library/e5daxzcy(v=vs.80).aspx 
        // Define a new HtmlTableCell control. 
        HtmlTableCell cell = new HtmlTableCell("td"); 

        // Create the text for the cell. 
        cell.Controls.Add(new LiteralControl(Convert.ToString(drv[dc.ColumnName]))); 
        cell.ColSpan = dc.ColumnName.Equals("LoginID") ? I_COLSPAN - iGeneration : 1; 

        // Add the cell to the HtmlTableRow Cells collection. 
        row.Cells.Add(cell); 
       } 
       else if (!(dc.ColumnName.Equals("GENERATION") || 
          dc.ColumnName.Equals("hierarchy") || 
          dc.ColumnName.Equals("rowNo") || 
          dc.ColumnName.Equals("EmployeeID"))) 
       { 
        // http://msdn.microsoft.com/en-US/library/e5daxzcy(v=vs.80).aspx 
        // Define a new HtmlTableCell control. 
        HtmlTableCell cell = new HtmlTableCell("td"); 

        bool bIsNull = drv[dc.ColumnName] is System.DBNull; 

        Literal ltrl = new Literal(); 
        ltrl.Text += "<input type=\"checkbox\" name=\"" + dc.ColumnName + "\"" + 
            (bIsNull ? "" : " value=" + drv[dc.ColumnName].ToString()) + 
            " id=\"" + sEmployeeID + "~" + dc.ColumnName.Replace(" ", "_") + "\"" +//will be retrieved later 
            " onclick=\"didModify(this)\" " + 
            (bIsNull ? " disabled" : "") + 
            (!bIsNull && ((int)drv[dc.ColumnName]) > 0 ? " checked>" : ">"); 

        cell.Controls.Add(ltrl); 
        // Add the cell to the HtmlTableRow Cells collection. 
        row.Cells.Add(cell); 
       } 
       else 
       { 
        //other rows 
       } 
      } 
     } 
    } 
関連する問題