我对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#中执行此操作?非常感谢你。
答案 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,数组等。
希望有所帮助。