如何在gridview中生成子行 [英] How to generate child rows inside gridview
问题描述
在asp.net c#中创建gridview。点击按钮添加每一行。现在我想为特定行创建子行。喜欢1.1,1.2 ...同时点击添加按钮(每行)。怎么做?
我尝试了什么:
前端
<前lang =HTML> < asp:gridview ID = Gridview1 runat = server ShowFooter = true
AutoGenerateColumns = false >
< 列 >
< asp:BoundField DataField = RowNumber HeaderText = 行号 / >
< asp: TemplateField HeaderText = 第1栏 >
< ItemTemplate >
< asp:TextBox ID = TextBox1 runat = server > < / asp:TextBox >
< / ItemTemplate >
< / asp:TemplateField >
< asp:TemplateField HeaderText = 第2栏 >
< ItemTemplate >
< asp:TextBox ID = TextBox2 runat = server > < / asp:TextBox >
< / ItemTemplate >
< / asp :TemplateField >
< asp:TemplateField HeaderText = 第3栏 >
< ItemTemplate >
< asp:TextBox ID = TextBox3 runat = server > < < span class =code-leadattribute> / asp:TextBox >
< / ItemTemplate >
< ; / asp:TemplateField >
< asp:TemplateField >
< ItemTemplate >
< asp:LinkButton ID = Link1 runat = server > 添加< / asp:LinkButton >
< / ItemTemplate >
< FooterStyle HorizontalAlign = 正确 / >
< span class =code-keyword>< FooterTemplate >
< asp:按钮 ID = ButtonAdd runat = server 文字 = 添加新行 OnClick = ButtonAdd_Click / >
< / FooterTemplate >
< / asp:TemplateField >
< / Columns >
< / asp:gridview >
Created gridview in asp.net c#.Adding each row with button click .now i want to create child rows for particular row. like 1.1,1.2...while clicking add button (in each row).how to do it? 这篇关于如何在gridview中生成子行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
代码背后
<前lang =c#> 私人 < span class =code-keyword> void AddNewRowToGrid()
{
int rowIndex = 0 跨度>;
if (ViewState [ CurrentTable]!= null )
{
DataTable dtCurrentTable =(DataTable)ViewState [ CurrentTable];
DataRow drCurrentRow = null ;
if (dtCurrentTable.Rows.Count > 0 )
{
for ( int i = < span class =code-digit> 1 ; i < = dtCurrentTable.Rows.Count; i ++)
{
// 提取TextBox值
TextBox box1 =(TextBox)Gridview1.Rows [rowIndex] .Cells [ 1 ]。FindControl( TextBox1< /跨度>);
TextBox box2 =(TextBox)Gridview1.Rows [rowIndex] .Cells [ 2 ]。FindControl( TextBox2);
TextBox box3 =(TextBox)Gridview1.Rows [rowIndex] .Cells [ 3 ]。FindControl( TextBox3);
drCurrentRow = dtCurrentTable.NewRow();
drCurrentRow [ RowNumber] = i + 1 跨度>;
dtCurrentTable.Rows [i - 1 ] [ Column1] = box1.Text;
dtCurrentTable.Rows [i - 1 ] [ Column2] = box2.Text;
dtCurrentTable.Rows [i - 1 ] [ Column3] = box3.Text;
rowIndex ++;
}
dtCurrentTable.Rows.Add(drCurrentRow);
ViewState [ CurrentTable] = dtCurrentTable;
Gridview1.DataSource = dtCurrentTable;
Gridview1.DataBind();
}
}
else
{
Response.Write( ViewState为空);
}
SetPreviousData();
} 如上所述,您无法在Gridview控件中为行添加子行。您需要为要包含子行的每一行添加新网格。请参考下面的链接,它应该给你一个想法。
使用C#和VB.Net在ASP.Net中嵌套GridView示例 [ ^ ]
What I have tried:
Front end
<asp:gridview ID="Gridview1" runat="server" ShowFooter="true"
AutoGenerateColumns="false" >
<Columns>
<asp:BoundField DataField="RowNumber" HeaderText="Row Number" />
<asp:TemplateField HeaderText="Col 1">
<ItemTemplate>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Col 2">
<ItemTemplate>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Col 3">
<ItemTemplate>
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField >
<ItemTemplate>
<asp:LinkButton ID="Link1" runat="server">Add</asp:LinkButton>
</ItemTemplate>
<FooterStyle HorizontalAlign="Right" />
<FooterTemplate>
<asp:Button ID="ButtonAdd" runat="server" Text="Add New Row" OnClick="ButtonAdd_Click" />
</FooterTemplate>
</asp:TemplateField>
</Columns>
</asp:gridview>
code behind
private void AddNewRowToGrid()
{
int rowIndex = 0;
if (ViewState["CurrentTable"] != null)
{
DataTable dtCurrentTable = (DataTable)ViewState["CurrentTable"];
DataRow drCurrentRow = null;
if (dtCurrentTable.Rows.Count > 0)
{
for (int i = 1; i <= dtCurrentTable.Rows.Count; i++)
{
//extract the TextBox values
TextBox box1 = (TextBox)Gridview1.Rows[rowIndex].Cells[1].FindControl("TextBox1");
TextBox box2 = (TextBox)Gridview1.Rows[rowIndex].Cells[2].FindControl("TextBox2");
TextBox box3 = (TextBox)Gridview1.Rows[rowIndex].Cells[3].FindControl("TextBox3");
drCurrentRow = dtCurrentTable.NewRow();
drCurrentRow["RowNumber"] = i + 1;
dtCurrentTable.Rows[i - 1]["Column1"] = box1.Text;
dtCurrentTable.Rows[i - 1]["Column2"] = box2.Text;
dtCurrentTable.Rows[i - 1]["Column3"] = box3.Text;
rowIndex++;
}
dtCurrentTable.Rows.Add(drCurrentRow);
ViewState["CurrentTable"] = dtCurrentTable;
Gridview1.DataSource = dtCurrentTable;
Gridview1.DataBind();
}
}
else
{
Response.Write("ViewState is null");
}
SetPreviousData();
}
As said you cannot add child rows for rows in Gridview control. You need to add new grid for each row you want to have child rows. Refer below link it should give you idea.
Nested GridView Example in ASP.Net using C# and VB.Net[^]