Добавление двух строк и отображение в списке - PullRequest
0 голосов
/ 29 января 2012

У меня есть веб-форма, которая после завершения хранит данные в строке, и мне нужно, чтобы она добавила то, что было сохранено, в другую строку, которая отображает текст в поле списка (на отдельной странице, чем веб-форма).

Я не знаю, как это сделать (я знаю, что это нужно вызвать и добавить, но я не уверен, как это сделать).

Вот класс для веб-формы:

public partial class _Default : System.Web.UI.Page
{
    string non_fiction;
    string fiction;
    string self_help;

    protected void Submit_btn_Click(object sender, EventArgs e)
    {
        if (Cat_DropDownList.SelectedIndex == 0)
        {
            fiction = "Title: " + Titletxt.Text + " | " + "Description: " + Descriptiontxt.Text + " | " + "Price: " + Pricetxt.Text + " | " + "Quantity: " + Quantitytxt.Text;
        }

        if (Cat_DropDownList.SelectedIndex == 1)
        {
            non_fiction = "Title: " + Titletxt.Text + " | " + "Description: " + Descriptiontxt.Text + " | " + "Price: " + Pricetxt.Text + " | " + "Quantity: " + Quantitytxt.Text;

        }

        if (Cat_DropDownList.SelectedIndex == 2)
        {
            self_help = "Title: " + Titletxt.Text + " | " + "Description: " + Descriptiontxt.Text + " | " + "Price: " + Pricetxt.Text + " | " + "Quantity: " + Quantitytxt.Text;
        }
    }
}

И это класс для другой страницы, которая содержит список, к которому следует добавить новую книгу:

public partial class partin : System.Web.UI.Page
{
    private List<String> books = new List<String>();

    int SortASC(string x, string y){ return String.Compare(x, y);}
    int SortDESC(string x, string y){ return String.Compare(x, y) * -1;}

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Header_Label.Text = "Welcome! Please select a book category.";
        }
    }

    protected void Fiction_Click(object sender, EventArgs e)
    {
        PopulateFiction();
    }

    protected void PopulateFiction()
    {
        Item_Listbox.Items.Clear();
        Header_Label.Text = "Fiction Section";

        books.Add("Title: The Old Man and The Sea | Decription: An epic novel. | Price: 10 USD | Quantity: 3");
        books.Add("Title: A Game of Thrones | Decription: A tale of fire and ice. | Price: 15 USD | Quantity: 6");
        books.Add("Title: Dracula | Decription: A book about vampires. | Price: 5 USD | Quantity: 7");
        books.Add("Title: Twilight | Decription: An awful book. | Price: Free | Quantity: 1000");

        Item_Listbox.DataSource = books;
        Item_Listbox.DataBind();

        ViewState["books"] = books;
    }

    protected void Non_Fiction_Click(object sender, EventArgs e)
    {
        Header_Label.Text = "Non-Fiction Section";

        Item_Listbox.Items.Clear();
        Header_Label.Text = "Fiction Section";

        books.Add("Title: zzzThe Old Man and The Sea | Decription: An epic novel. | Price: 10 USD | Quantity: 3");
        books.Add("Title: zzzA Game of Thrones | Decription: A tale of fire and ice. | Price: 15 USD | Quantity: 6");
        books.Add("Title: zzzDracula | Decription: A book about vampires. | Price: 5 USD | Quantity: 7");
        books.Add("Title: zzzTwilight | Decription: An awful book. | Price: Free | Quantity: 1000");

        Item_Listbox.DataSource = books;
        Item_Listbox.DataBind();

        ViewState["books"] = books;
    }

    protected void Self_Help_Click(object sender, EventArgs e)
    {
        Header_Label.Text = "Self Help Section";
    }

    protected void Sort_Command(object sender, CommandEventArgs e)
    {
        books = (List<string>)ViewState["books"];
        if (e.CommandName == "Sort")
        {
            switch (e.CommandArgument.ToString())
            {
                case "ASC":
                    books.Sort(SortASC);
                    break;
                case "DESC":
                    books.Sort(SortDESC);
                    break;
            }
        }
        Item_Listbox.DataSource = books;
        Item_Listbox.DataBind();
    }
}

1 Ответ

0 голосов
/ 29 января 2012

Вам не нужно использовать ViewState для того, чего вы хотите достичь, что (я думаю) публикует недавно введенную книгу на другой странице, которая показывает все книги в категории.Вы можете использовать свойство PostBackUrl кнопки «Отправить», чтобы форма не отправляла «назад» на ту же страницу, а вместо этого отправляла на другую страницу (в вашем случае partin.aspx).Вы бы написали свойства кнопки в html следующим образом:

<asp:Button ID="Submit_btn" runat="server" onclick="Submit_btn_Click" PostBackUrl="~/partin.aspx" Text="Submit" />

Затем на странице, которую вы разместили (partin.aspx), вы захотите получить введенные значения.Вы можете сделать это с помощью свойства Request.Form, как в этом методе:

private string GetBookAddedToForm()
{
    string bookDetails  = "Title: " + Request.Form["Titletxt"] + " | " + "Description: " + Request.Form["Descriptiontxt"] + " | " + "Price: " + Request.Form["Pricetxt"] + " | " + "Quantity: " + Request.Form["Quantitytxt"];
        return bookDetails;
}

Вот HTML-код для страницы по умолчанию.

<%@ Page Title="Home Page" Language="C#"  AutoEventWireup="true"
    CodeBehind="Default.aspx.cs" Inherits="WebApplication2._Default" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head><title>StackOverflow Question</title></head>
<body>
<form id="Form1" runat="server">
    <p>
        <asp:Label ID="Label5" runat="server" Text="Category" />
        <asp:DropDownList ID="Cat_DropDownList" runat="server" Height="21px" 
            Width="161px"></asp:DropDownList>
        <br />
        <asp:Label ID="Label1" runat="server" Text="Title" /><asp:TextBox ID="Titletxt" runat="server"></asp:TextBox>
        <br/>
        <asp:Label ID="Label2" runat="server" Text="Description" /><asp:TextBox ID="Descriptiontxt" runat="server"></asp:TextBox>
        <br/>
        <asp:Label ID="Label3" runat="server" Text="Price" /><asp:TextBox ID="Pricetxt" runat="server"></asp:TextBox>
        <br/>
        <asp:Label ID="Label4" runat="server" Text="Quantity" /><asp:TextBox ID="Quantitytxt" runat="server"></asp:TextBox>
    </p>
    <p>
        <asp:Button ID="Submit_btn" runat="server" onclick="Submit_btn_Click" PostBackUrl="~/partin.aspx"
            Text="Submit" />
    </p>
</form>
</body>
</html>

Вот код для DefaultСтраница ASPX.Вам не нужно никакого кода в событии submit_click, потому что вы обрабатываете выделение на странице, на которой оно было опубликовано.

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string[] categories = new string[] { "fiction", "non_fiction", "self_help" };
        Cat_DropDownList.DataSource = categories;
        Cat_DropDownList.DataBind();
    }

    protected void Submit_btn_Click(object sender, EventArgs e)
    {
    } 
}

Теперь html для partin.aspx.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="partin.aspx.cs" Inherits="WebApplication2.partin" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">

    <div>
        <asp:Label ID="Header_Label" runat="server" Text="Label"></asp:Label>
        <br />
        <asp:DropDownList ID="Category_DropDownList" runat="server" Height="16px" 
            Width="208px"></asp:DropDownList>
        <asp:ListBox ID="Item_Listbox" runat="server" Height="166px" Width="992px"></asp:ListBox>
    </div>
    </form>
</body>
</html>

Итеперь для мяса этого.Метод ShowBooks определяет, какой тип книги был опубликован на предыдущей странице, а затем добавляет ее в список на странице partin.aspx.Он захватывает все книги, которые уже были добавлены в хранилище, а затем добавляет в него вновь опубликованную книгу, вызывая метод GetBookAddedToForm.

public partial class partin : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                string[] categories = new string[] { "fiction", "non_fiction", "self_help" };
                Category_DropDownList.DataSource = categories;
                Category_DropDownList.DataBind();
                Header_Label.Text = "Welcome! Please select a book category.";
                string categorySelected = Request.Form["Cat_DropDownList"];
                ShowBooks(categorySelected);
            } 
        }

        private void ShowBooks(string category)
        {
            Item_Listbox.Items.Clear();
            List<string> books = null;
            switch(category)
            {
                case "fiction" :
                    Header_Label.Text = "Fiction Section";
                    books = GetFictionBooks();
                    break;
                case "non_fiction":
                    Header_Label.Text = "Non-Fiction Section";
                    books = GetNonFictionBooks();
                    break;
                case "self_help":
                    Header_Label.Text = "Self Help Section";
                    books = GetSelfHelpBooks();
                    break;
            }
            books.Add(GetBookAddedToForm());
            Item_Listbox.DataSource = books;
            Item_Listbox.DataBind(); 
        }

        private string GetBookAddedToForm()
        {
            string bookDetails  = "Title: " + Request.Form["Titletxt"] + " | " + "Description: " + Request.Form["Descriptiontxt"] + " | " + "Price: " + Request.Form["Pricetxt"] + " | " + "Quantity: " + Request.Form["Quantitytxt"];
            return bookDetails;
        }

        protected List<string> GetFictionBooks()
        {
            List<String> books = new List<String>(); 
            books.Add("Title: The Old Man and The Sea | Decription: An epic novel. | Price: 10 USD | Quantity: 3");
            books.Add("Title: A Game of Thrones | Decription: A tale of fire and ice. | Price: 15 USD | Quantity: 6");
            books.Add("Title: Dracula | Decription: A book about vampires. | Price: 5 USD | Quantity: 7");
            books.Add("Title: Twilight | Decription: An awful book. | Price: Free | Quantity: 1000");
            return books;
        } 

        private List<string> GetNonFictionBooks()
        {
            List<string> books = new List<string>();
            books.Add("Title: zzzThe Old Man and The Sea | Decription: An epic novel. | Price: 10 USD | Quantity: 3"); 
            books.Add("Title: zzzA Game of Thrones | Decription: A tale of fire and ice. | Price: 15 USD | Quantity: 6"); 
            books.Add("Title: zzzDracula | Decription: A book about vampires. | Price: 5 USD | Quantity: 7"); 
            books.Add("Title: zzzTwilight | Decription: An awful book. | Price: Free | Quantity: 1000");
            return books;
        }

        private List<string> GetSelfHelpBooks()
        {
            return new List<string>();
        }

Надеюсь, это поможет вам решить вашу проблему.

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