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#中可以做到这一点吗?非常感谢。
我认为,由于您使用的是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等。
希望能有所帮助。