Создать сетку с 5 строками - PullRequest
0 голосов
/ 01 апреля 2012

Я обычно создаю сетку на основе данных, чтобы в ней были строки в зависимости от того, что источник данных выплевывает, но на этот раз ... Мне нужно сделать что-то другое. Мне нужно 5 строк со следующими на каждой строке

TextBox |  DropDown   |   FileUploader  |  Checkbox
TextBox |  DropDown   |   FileUploader  |  Checkbox
TextBox |  DropDown   |   FileUploader  |  Checkbox
TextBox |  DropDown   |   FileUploader  |  Checkbox
TextBox |  DropDown   |   FileUploader  |  Checkbox

Затем, когда нажимается кнопка «Отправить», она берет каждую строку и создает продукт (я назову класс Product и просто назначу свойствам строку и сохраню продукт, как и для всех строк).

Как я могу добавить эти 5 элементов в представление сетки, если оно не зависит от данных ?, ему нужно иметь свойства вида сетки, например, заголовки будут

Product Name  |  Lot #   |   Image   |     Active   

Я просто не уверен, как добавить эти 5 строк, если не зависит от какого-либо источника данных, но все же хотел бы использовать свойства gridview.

Любые идеи будут высоко оценены, в первый раз мне придется иметь дело с сеткой, не зависящей от данных.

ПРИМЕЧАНИЕ: всегда будет 5 строк .. независимо от того, что и я проверю, заполнена ли вся информация, чтобы решить, добавлять продукт или нет.

Спасибо

Ответы [ 3 ]

1 голос
/ 01 апреля 2012

Во-первых, давайте создадим Gridview с элементами управления в разметке и кнопкой внизу для сохранения продуктов ...

<asp:GridView runat="server" ID="ProductGridview" AutoGenerateColumns="false">
    <Columns>
        <asp:TemplateField HeaderText="Product Name">
            <ItemTemplate>
                <asp:TextBox runat="server" ID="ProductNameTextBox" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Lot #">
            <ItemTemplate>
                <asp:DropDownList runat="server" ID="LotNumberDropDownList">
                    <asp:ListItem Text="1" />
                    <asp:ListItem Text="2" />
                    <asp:ListItem Text="3" />
                </asp:DropDownList>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Image">
            <ItemTemplate>
                <asp:FileUpload runat="server" ID="ImageFileUpload" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Active">
            <ItemTemplate>
                <asp:CheckBox Text="Active" runat="server" ID="ActiveCheckBox" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>
<asp:Button Text="Save Products" runat="server" ID="SaveProductsButton" OnClick="SaveProductsButton_Click" />

... давая нам текстовое поле, выпадающий список, fileupload и флажок в каждомrow.

Теперь нам нужно сгенерировать набор из 5 строк.Мы можем сделать это очень легко , привязав вид сетки к List<int>, который мы можем сгенерировать в Page_Load ...

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        // Generate a list of 5 integers - this will be the data source for the GridView
        List<int> rows = new List<int>();

        for (int i = 0; i < 5; i++)
        {
            rows.Add(i);
        }

        //Bind the Gridview to the list of integers so we get 5 rows in the UI
        ProductGridview.DataSource = rows;
        ProductGridview.DataBind();
    }
}

Это дает нам это как визуализированный вид сетки: enter image description here

Теперь нам просто нужен код, чтобы прочитать строки обратно при нажатии кнопки;мы перебираем строки, находя элементы управления в каждой строке, чтобы прочитать их значение ...

protected void SaveProductsButton_Click(object sender, EventArgs e)
{
    foreach (GridViewRow row in ProductGridview.Rows)
    {
        if (row.RowType == DataControlRowType.DataRow)
        {
            // Have to cast the result of FindControl to the correct type
            TextBox productTextBox = (TextBox)row.FindControl("ProductNameTextBox");
            DropDownList lotNumberDropDownList = (DropDownList)row.FindControl("LotNumberDropDownList");
            FileUpload imageFileUpload = (FileUpload)row.FindControl("ImageFileUpload");
            CheckBox activeCheckBox = (CheckBox)row.FindControl("ActiveCheckBox");

            saveProduct(productTextBox.Text, lotNumberDropDownList.SelectedItem.Text,
                                   imageFileUpload.PostedFile, activeCheckBox.Checked);
        }
    }
}
0 голосов
/ 01 апреля 2012

Вы можете просто создать список и добавить пять элементов DummyObj в этот список. DummyObj является вспомогательным объектом, который содержит четыре свойства для нужных вам столбцов.

Или я что-то упустил?

0 голосов
/ 01 апреля 2012

Вы можете использовать DataTable в качестве источника данных для вашего вида сетки. Вы можете посмотреть на этот пример .

РЕДАКТИРОВАТЬ: Я думаю, что этот подход лучше для того, что вам нужно.

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