C# 如何动态使用eval() for(i=0;i

C# 如何动态使用eval() for(i=0;i,c#,asp.net,C#,Asp.net,问题是……您确实知道将出现什么列名。您在步骤2中说dt.column.Add()字符串参数将来自数据库。因此,这意味着一个单独的过程,您首先进入数据库并获取列名列表 然后,您将遍历该列表并填充Eval函数(您添加的FOR语句实际上将遍历数据库列名列表,这些列名可能位于数组、列表或它们自己的datatable对象中).GridView更适合这种情况,它会自动从数据源生成列 但是,您可以循环使用数据表的列属性,并从每个列中获取列名属性,但是不能在数据绑定标记()内使用foreach循环 下面是如何获

问题是……您确实知道将出现什么列名。您在步骤2中说dt.column.Add()字符串参数将来自数据库。因此,这意味着一个单独的过程,您首先进入数据库并获取列名列表


然后,您将遍历该列表并填充Eval函数(您添加的FOR语句实际上将遍历数据库列名列表,这些列名可能位于数组、列表或它们自己的datatable对象中).

GridView更适合这种情况,它会自动从数据源生成列

但是,您可以循环使用
数据表的
属性,并从每个列中获取
列名
属性,但是不能在数据绑定标记(
)内使用
foreach
循环

下面是如何获取代码隐藏中的列名:

for(i=0;i<10;i++)
{
    <%# Eval(i.ToString()).ToString()%>
}
您可以在中继器的项目模板的循环中使用它,但是,因为您没有使用数据绑定块(
),您将丢失
容器。DataItem
,这使得从当前项目渲染数据非常困难(如果不是不可能的话)。

解决您的问题

在*ASP.NET*中

DataTable dt = new DataTable();

//populate data table

foreach (DataColumn col in dt.Columns)
{
    string columnName = col.ColumnName;
}

在C#后面的代码中

System.Data.DataTable dt=null;
私有void GetData()
{
System.Data.DataTable dtMain=//MyDAta表;
dt=新的System.Data.DataTable();
dt.列。添加(“列名称”);
System.Data.DataRow dr=null;
for(int i=0;i
这是什么类型的代码?您想做什么(英语)我已经添加了一个GRIDVIEW的解释,如果你正在尝试做某种动态网格,你应该考虑在GRIDVIEW上使用“AutoGeNeCeCulnNs”属性,然后利用“OnWraveCudies”事件来评估/转换ReDel.Yar之前的数据!现在我的问题是如何获得DataTable的“列名称”这不是解决方案。请先阅读问题,然后再回答:(
<asp:Repeater ID="rptrTester" OnItemDataBound="rptrTester_ItemDataBound" runat="server">
    <ItemTemplate>
        <asp:Repeater ID="rptrTesterInner" runat="server">
            <ItemTemplate>
                <%# Eval("COL_NAME")%>
            </ItemTemplate>
        </asp:Repeater>
    </ItemTemplate>
</asp:Repeater>
System.Data.DataTable dt = null;
    private void GetData()
    {
        System.Data.DataTable dtMain = // MyDAta Table;
        dt = new System.Data.DataTable();
        dt.Columns.Add("COL_NAME");
        System.Data.DataRow dr = null;
        for (int i = 0; i < dtMain.Columns.Count; i++)
        {
            dr = dt.NewRow();
            dr[0] = dtMain.Columns[0].ColumnName;
            dt.Rows.Add(dr);
        }
        rptrTester.DataSource = dtMain;
        rptrTester.DataBind();
    }
    protected void rptrTester_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        Repeater rptrTesterInner = (Repeater)e.Item.FindControl("rptrTesterInner");
        rptrTesterInner.DataSource = dt;
        rptrTesterInner.DataBind();
    }