Asp.net C#:在GridView中添加新行
我正在尝试在Asp.net C#:在GridView中添加新行,c#,asp.net,gridview,C#,Asp.net,Gridview,我正在尝试在GridViewon按钮上用标签的值创建新行: <Asp:Label id="Label1" runat="Server" Text="My name"> <Asp:Label id="Label2" runat="Server" Text="My Age"> <Asp:Label id="Label3" runat="Server" Text="My Gender"> 在按钮中单击,标签值将插入gridview 我尝试将标签值插入网格视图中,但
GridView
on按钮上用标签的值创建新行
:
<Asp:Label id="Label1" runat="Server" Text="My name">
<Asp:Label id="Label2" runat="Server" Text="My Age">
<Asp:Label id="Label3" runat="Server" Text="My Gender">
在按钮中单击
,标签
值将插入gridview
我尝试将标签
值插入网格视图
中,但出现错误:“数据绑定:'System.Data.DataRowView'不包含名为'name'的属性”
它是否有任何错误?@RahulHendawe我没有编写在按钮上单击的代码来将新行添加到gridview中,因此没有错误。通过提供的代码,尝试,您尝试将控件(从
gridview
)放入标签文本(??)。。。错误的和你想要的相反。。。即使你们选择正确的方式,你们仍然需要定义在哪一行寻找标签(GridView
FindControl
)。@nelek我所知道的就是定义页脚行,比如:GridView1.FooterRow.FindControl(…)
,但我不想使用页脚行。我该怎么办?如果需要向网格中添加一行,应该将该行添加到网格数据绑定到的列表/数据表/其他结构中。然后重新绑定网格。
<Asp:Gridview runat="Server" Id="GridView1" AutoGenerateColumns="False">
<Columns>
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<asp:Label runat="server" ID="Name_lbl" Text='<%# Eval("Name")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Age">
<ItemTemplate>
<asp:Label runat="server" ID="Age_lbl" Text='<%# Eval("Age")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Gender">
<ItemTemplate>
<asp:Label runat="server" ID="Gender_lbl" Text='<%# Eval("Gender")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
DataTable dt = new DataTable();
DataRow dr;
if (dt.Columns.Count == 0)
{
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Age", typeof(string));
dt.Columns.Add("Gender", typeof(string));
}
foreach (GridViewRow gvr in GridView1.Rows)
{
dr = dt.NewRow();
Label1.Text =( gvr.FindControl("Name_lbl") as Label).ToString();
Label2.Text = (gvr.FindControl("Age_lbl") as Label).ToString();
Label3.Text = (gvr.FindControl("Gender_lbl") as Label).ToString();
dr[1] = Label1.Text;
dr[2] = Label2.Text;
dr[3] = Label3.Text;
dt.Rows.Add(dr);
}
dr = dt.NewRow();
dt.Rows.Add(dr);
GridView1.DataSource = dt;
GridView1.DataBind();