【问题标题】:How to add text in label inside gridview from DataTable如何在 DataTable 中的 gridview 内的标签中添加文本
【发布时间】:2012-10-01 14:37:49
【问题描述】:

我想从 DataTable 中绑定网格视图

    var dt = new DataTable();
    dt.Columns.Add("nrtest");
    dt.Columns.Add("asd");
    dt.Columns.Add("dsa");
    dt.Columns.Add("qwe");
    dt.Columns.Add("ewq");

    dt.Rows.Add("test1","","","","");
    dt.Rows.Add("test2","","","","");
    dt.Rows.Add("test3","","","","");


    mygrid.DataSource = dt;
    mygrid.DataBind();

我的网格中的第一列包含标签

我想将数据表中的第一列添加到 gridview 中的第一列

我正在尝试这样:

 foreach(GridViewRow gdRow in mygrid.Rows)
            {
               if (gdRow.RowType == DataControlRowType.DataRow)
                     {
             var label1 = (Label) gdRow.Cells[1].FindControl("myLabel");
                         text1.Text = text1;

             var label2 = (Label) gdRow.Cells[1].FindControl("myLabel");
                         text2.Text = text2;

             var label3 = (Label) gdRow.Cells[1].FindControl("myLabel");
                         text3.Text = text3;
           }
      }
  but it doesn't work, at the end all the labels contain text3

我的网格视图:

 <asp:GridView ID="mygrid" runat="server" AutoGenerateColumns="False" 
              Visible="True" width="600px" onrowcreated="GdOrarRowCreated">

          <Columns>
                      <asp:TemplateField >
                          <HeaderTemplate>
                   <asp:Label ID="text" runat="server" Text="text" ></asp:Label>
                          </HeaderTemplate>
                          <ItemTemplate>
                              <asp:Label runat="server" ID="myLabel" />
                          </ItemTemplate>
                      </asp:TemplateField>

  <asp:BoundField DataField="asd" Visible="True"  HeaderText="col2"/>
  <asp:BoundField DataField="dsa" Visible="True"  HeaderText="col3"/>
  <asp:BoundField DataField="qwe" Visible="True"  HeaderText="col4"/>
  <asp:BoundField DataField="ewq" Visible="True"  HeaderText="col5"/>

                       </Columns>
                    </asp:GridView>

【问题讨论】:

  • 请为 GridView 发布您的标记

标签: c# asp.net gridview label


【解决方案1】:

您为所有 3 个标签分配了相同的 ID。给他们一个唯一的ID,然后尝试。因为它分配了最后一个值

您的代码还有其他一些问题,您可以尝试类似

    var dt = new DataTable();
    dt.Columns.Add("nrtest");
    dt.Columns.Add("asd");
    dt.Columns.Add("dsa");
    dt.Columns.Add("qwe");
    dt.Columns.Add("ewq");

    dt.Rows.Add("test1", "", "", "", "");
    dt.Rows.Add("test2", "", "", "", "");
    dt.Rows.Add("test3", "", "", "", "");


    mygrid.DataSource = dt;
    mygrid.DataBind();

做任何事情,然后绑定网格,你可以使用 for 循环,这将让你更容易获得行索引,然后你可以使用 rowindex 绑定:

    var rows =  mygrid.Rows;
    for(int i=0,j=rows.Count; i<j;i++)
    {
        var row = rows[i];
        if (row.RowType == DataControlRowType.DataRow)
        {
            var label1 = (Label)row.Cells[1].FindControl("myLabel");
            //use rowindex i and colindex "nrtest" to get data from dt
            label1.Text = dt.Rows[i]["nrtest"].ToString();
        }
    }

网格代码将保持不变

<asp:GridView ID="mygrid" runat="server" AutoGenerateColumns="False" Visible="True"
    Width="600px">
    <Columns>
        <asp:TemplateField>
            <HeaderTemplate>
                <asp:Label ID="text" runat="server" Text="text"></asp:Label>
            </HeaderTemplate>
            <ItemTemplate>
                <asp:Label runat="server" ID="myLabel" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="asd" Visible="True" HeaderText="col2" />
        <asp:BoundField DataField="dsa" Visible="True" HeaderText="col3" />
        <asp:BoundField DataField="qwe" Visible="True" HeaderText="col4" />
        <asp:BoundField DataField="ewq" Visible="True" HeaderText="col5" />
    </Columns>
</asp:GridView>

【讨论】:

    【解决方案2】:

    您正在为所有 3 个标签分配相同的 ID。 给他们一个唯一的 ID,然后尝试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-02
      • 2020-10-18
      • 2021-05-27
      • 1970-01-01
      • 1970-01-01
      • 2017-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多