C#动态输入列表

本文关键字:列表 输入 动态 | 更新日期: 2023-09-27 18:24:14

我有一个关于C#和接口设计的问题。我想设计一个如下的界面:

家长数量:(文本框)//仅限int

子级数量:(应该是一个表)//仅限int

当用户输入父母的数量时,例如2该表应显示2行供用户输入,如以下

-------------------------------
|No.Of Parents | No.Of Children|
|--------------|---------------|
|       1      |    (input)    |
|--------------|---------------|
|       2      |    (input)    |
|--------------|---------------|

父母数量的输入是未编辑字段,当用户将父母数量修改为3时,应该是表中的3行。

表是"GridView",我添加了2个"templateField"。对于儿童数量,我将"文本框"添加到"ItemTemple"中,但我不知道

1) 如何显示表格的行号取决于文本框的输入

2) 如何显示表中从1到n行的文本。

在visual studio C#中可以做到这一点吗?非常感谢。

C#动态输入列表

我认为,由于您使用的是GridView,所以它是ASP.NET,而不是WinForms。我认为你真正想要的东西可以直接在你的页面上完成,或者使用自定义的UserControl,而不是界面。C#中的"接口"一词有一个特定的含义,它有点不同:

http://msdn.microsoft.com/en-us/library/87d83y5b(v=vs.80).aspx

假设您只是在页面上进行操作,则需要为NumberOfParents文本框TextChanged事件添加一个事件处理程序,并在代码绑定中添加一些简单代码,以添加行并绑定网格视图。在您的ASPX页面中,类似于以下内容:

    Number Of Parents: <asp:TextBox runat="server" ID="txtNumberOfParents" AutoPostBack="true" OnTextChanged="txtNumberOfParents_TextChanged" /><br />
    <br />
    <asp:GridView runat="server" ID="gvNumberOfChildren" AutoGenerateColumns="false">
        <Columns>
            <asp:TemplateField HeaderText="No. of Parents">
                <ItemTemplate>
                    <%# Container.DataItemIndex + 1 %>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="No. of Children">
                <ItemTemplate>
                    <asp:TextBox runat="server" ID="txtNumberOfChildren" />
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

在你的代码后台,有这样的东西:

    protected void txtNumberOfParents_TextChanged(object sender, EventArgs e)
    {
        int numParents = 0;
        int[] bindingSource = null;
        Int32.TryParse(txtNumberOfParents.Text, out numParents);
        if (numParents > 0)
        {
            bindingSource = new int[numParents];
        }
        gvNumberOfChildren.DataSource = bindingSource;
        gvNumberOfChildren.DataBind();
    }

gridview(或任何其他数据绑定控件)可以绑定到几乎任何数组或IEnumerable,这意味着你可以使用List(t)、Dictionary、array等。

希望能有所帮助。