【问题标题】:how to add label text from data table如何从数据表中添加标签文本
【发布时间】:2013-12-31 16:59:01
【问题描述】:

我的 aspx 页面有许多标签,我需要从数据表中分配文本。 标签 id 像 label1,lable2....

数据表

val// column name and row values

1. name  
2. age   
3. ph
4. address etc..

 aspx page // design 

 <table width=100% >
        <tr>
            <td style="width: 643px">
                <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
            </td>
            <td>
                <asp:DropDownList ID="DropDownList1" runat="server">
                </asp:DropDownList>
            </td>
        </tr></table> 

我试过下面的代码

string label_te = null;
int i = 0;
foreach (DataRow dr in obj_dt.Rows)
   {
       i++;
       label_te = dr.Field<string>("val");

       Label+i.Text = label_te.ToString();
   }

我知道上面的代码是错误的。任何想法得到它

【问题讨论】:

  • 你不能这样做 - Label+i.Text。您的 ASPX 页面是什么样的?
  • 我不明白,你想达到什么目的?为什么不将其与 Grid 绑定?或者请详细说明要求...

标签: asp.net c#-4.0


【解决方案1】:

你可以试试:

   string label_te = null;
   int i = 0;
   foreach (DataRow dr in obj_dt.Rows)
   {
       i++;
       label_te = dr.Field<string>("val");
       Label l = this.FindControl("Label"+i.ToString()) as Label;
       if(l!=null)
       {
         l.Text = label_te.ToString();
       }
   }

【讨论】:

  • 它显示空引用异常“对象引用未设置为对象的实例。”
  • @Happy 请看我的编辑。您的DataTable 有多少行,您的表单上的标签数量是否相同?
  • 如果 Label 控件嵌套在其他控件中,this.FindControl 将不起作用。您需要像 this 一样递归地找到它们
  • 该表不在服务器上运行
  • @Happy 您的示例中的表格是否嵌套在任何其他服务器控件中?我测试过,这对我有用
【解决方案2】:

Label+i.Text 不是有效代码。

相反,您希望动态创建 Label 控件,并将它们添加到 PlaceHolder(或 Panel)控件。

ASPX

<asp:PlaceHolder runat="server" ID="PlaceHolder1" />

代码隐藏

string label_te;
int i = 0;
foreach (DataRow dr in obj_dt.Rows)
{
    i++;
    label_te = dr.Field<string>("val");
    var label = new Label
    {
        Text = label_te, 
        ID = "Label" + i
    };
    PlaceHolder1.Controls.Add(label);
}

更新:

根据您最近的更新,您只是想通过捷径为标签赋值。 这不是正确的做法;它真的很脆弱。相反,您想正确命名这些标签,如FirstNameLastName 并分配它们。

string label_te;
int i = 0;
foreach (DataRow dr in obj_dt.Rows)
{
    i++;
    label_te = dr.Field<string>("val");
    if (!string.IsNullOrWhiteSpace(label_te))
    {
        ValLabel.Text = label_te;
    }

    i++;
    label_te = dr.Field<string>("AnotherField");
    if (!string.IsNullOrWhiteSpace(label_te))
    {
        AnotherFieldLabel.Text = label_te;
    }
}

或者像 Hitesh 建议的那样使用 GridViewListViewRepeater 控件。

【讨论】:

  • 我已经有带有下拉列表的表格。我需要插入表格
【解决方案3】:

您可以使用 GridView 来实现它,see this 用于 GridView 示例

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 2021-07-11
    • 2019-07-16
    • 2016-05-25
    • 1970-01-01
    相关资源
    最近更新 更多