C# 如何从DataTable在gridview内的标签中添加文本
我想从DataTable绑定网格视图C# 如何从DataTable在gridview内的标签中添加文本,c#,asp.net,gridview,label,C#,Asp.net,Gridview,Label,我想从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",
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();
我的网格中的第一列包含标签
我想将datatable中的第一列添加到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>
您正在为所有3个标签分配相同的id。
给他们一个唯一的id,然后再试。您正在为所有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();
}
}
var rows=mygrid.rows;
对于(int i=0,j=rows.Count;i请发布GridView的标记
<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>