GrpSMK Ответов: 1

Как создать дочерние строки внутри gridview


Созданный gridview в asp.net c#.При добавлении каждой строки с кнопкой .теперь я хочу создать дочерние строки для конкретной строки. например, 1.1, 1.2...при нажатии кнопки Добавить (в каждой строке).как это сделать?

Что я уже пробовал:

Внешний интерфейс
 <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>


с фоновым кодом
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();
        }

[no name]

Вероятно, вам понадобится вложенная сетка, если вам нужно иметь дочерние строки для определенных строк.

Maciej Los

Мой виртуальный 5!

GrpSMK

Как добавить идентификатор типа 1.1, 1.2 в дочерние строки?

1 Ответов

Рейтинг:
2

Vinod Jangle

Как уже было сказано, вы не можете добавлять дочерние строки для строк в элементе управления Gridview. Вам нужно добавить новую сетку для каждой строки, которую вы хотите иметь дочерними строками. Обратитесь к ссылке ниже, это должно дать вам представление.

Пример вложенного GridView в ASP.Net с использованием C# и VB.Net[^]


GrpSMK

да, как это, но во вложенной сетке, как добавить идентификатор на основе родительского идентификатора..Если родительский идентификатор равен 1, значит, как добавить вложенные строки сетки id 1.1, 1.2 вот так