C#动态输入列表

时间:2012-02-12 04:28:41

标签: c# visual-studio gridview user-interface itemtemplate

我对C#和界面设计有疑问。我想设计一个如下界面:

父母数:(文本框)//仅限int

儿童数量:(应该是一张桌子)//仅限于int

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

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

当用户修改no时,no.of parent的输入是un-edit字段。父母对3,表中应该是3行。

该表是'GridView',我添加了2'templateField'。对于No.Of Children,我将'Textbox'添加到'ItemTemple',但我不知道

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

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

是否可以在Visual Studio C#中执行此操作?非常感谢你。

1 个答案:

答案 0 :(得分:0)

我假设你使用GridView是ASP.NET而不是WinForms。我认为您真正想要的是可以直接在您的页面上完成,也可以使用自定义UserControl,而不是界面。 C#中的“接口”一词具有特定的含义,它有点不同:

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

假设您只是继续在页面上执行此操作,您需要为NumberOfParents文本框TextChanged事件添加事件处理程序,并在代码隐藏中添加一些简单代码以添加行并绑定gridview。在您的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,数组等。

希望有所帮助。