在updatepanel中将行添加到动态用户控件的asp表中

时间:2017-10-08 19:03:15

标签: c# asp.net .net

我有一个动态制作的行<asp:Table>;其中每个cell都有一个用户控件。在<asp:Button>点击后,我调用了一个函数,该函数使用后面代码中的表ID向表中添加了另一行用户控件。问题是它只向表中添加了一行。这可能是因为数据不存在或其他原因(我不太确定)

的.ascx

<asp:UpdatePanel 
    ID="UpdatePanel1"
    UpdateMode="Conditional"
    runat="server">
    <ContentTemplate>

        <!-- Table update/add -->
        <div class="table-controls">
            <asp:button type="button" class="ui left floated positive button" runat="server" OnClick="TableAdd_OnClick" Text="New Row">
            </asp:button>

            <asp:button type="button" class="ui right floated positive button" runat="server" OnClick="TableSave_OnClick" Text="Save">
            </asp:button>
        </div>
        <!-- Table update/add -->

        <!-- Flex Table -->
        <asp:Table
            ID="Table"
            class="table table-bordered table-striped table-hover sortable"
            Style="width: 100%; margin-top: 0; padding-top: 0; overflow: auto;"     
            runat="server">

            <asp:TableHeaderRow
                ID="TableHeader"
                Style="color: White; background-color: #2E2E2E;"
                runat="server">
            </asp:TableHeaderRow>

            <!-- Dynamic User Controls -->

            <asp:TableFooterRow>
            </asp:TableFooterRow>
        </asp:Table>
        <!-- Flex Table -->
    </ContentTemplate>
</asp:UpdatePanel>

.ascx.cs(codebehind)

protected void TableAdd_OnClick(object sender, EventArgs e)
    {

        var tr = new TableRow();
        foreach (var col in DataSource)
        {
            var td = new TableCell();

            switch (col.Item1)
            {
                case "Type":
                    td.Controls.Add(col.Item3(""));
                    break;
                case "Account Name":
                    td.Controls.Add(col.Item3(""));
                    break;
                case "Applications":
                    td.Controls.Add(col.Item3(""));
                    break;
                case "Accounting Date":
                    td.Controls.Add(col.Item3(""));
                    break;
                case "Post Date":
                    td.Controls.Add(col.Item3(""));
                    break;
                case "Amount":
                    td.Controls.Add(col.Item3(""));
                    break;
                case "":
                    td.Controls.Add(col.Item3(""));
                    break;
                default:
                    break;

            }

            tr.Cells.Add(td);

        }

        Table.Rows.Add(tr);
    }

问题

如何更新此表,以便在每次单击时实际添加一个新行。我调查了ChildControlsCreated,但我还没有弄清楚如何使用它来解决这个问题。

0 个答案:

没有答案