Динамический ввод C # - PullRequest
       15

Динамический ввод C #

0 голосов
/ 12 февраля 2012

У меня вопрос по C # и дизайну интерфейса. Я хочу создать интерфейс, подобный следующему:

Количество родителей: (текстовое поле) // только для int

Количество детей: (должно быть таблицей) // только для int

Когда пользователь вводит число родителей, например, 2 Таблица должна отображать 2 строки для ввода пользователем, как показано ниже

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

Ввод no.of родителей является полем без редактирования, когда пользователь изменяет no. родителей на 3, должно быть 3 строки в таблице.

Таблица «GridView», я добавляю 2 «templateField». Для № детей я добавляю «Текстовое поле» к «ItemTemple», но я не знаю

1) способ отображения номера строки таблицы зависит от ввода текстового поля

2) как отобразить текст от 1 до n строк в таблице.

Возможно ли это сделать в visual studio C #? Большое спасибо.

1 Ответ

0 голосов
/ 12 февраля 2012

Полагаю, поскольку вы используете GridView, это ASP.NET, а не WinForms. Я думаю, что то, что вы действительно ищете, может быть сделано непосредственно на вашей странице или с помощью пользовательского UserControl, а не интерфейса. Термин «Интерфейс» в C # имеет конкретное значение и немного отличается:

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

Предполагая, что вы просто продолжаете делать это на странице, вам нужно добавить обработчик событий для вашего события TextChanged для текстового поля NumberOfParents и некоторый простой код в вашем коде, чтобы добавить строки и связать ваше представление сетки. На вашей странице 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();
    }

Вид сетки (или любой другой элемент управления, связанный с данными) может быть привязан практически к любому массиву или IEnumerable, что означает, что вы можете использовать List (t), Dictionary, массив и т. Д.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...