Как динамически добавлять строки в таблицу в ASP.NET?

Итак, сегодня я начал изучать ASP.NET. К сожалению, я не нашел хороших обучающих онлайн, и я не могу позволить себе покупать книги в данный момент, поэтому мне пришлось создать веб-приложение ASP.NET в Visual Studio 2010 и просто поиграть с настройкой проекта по умолчанию.

Пока что у меня в моем Default.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>

<!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>Project Management</title>
</head>
<body>
    <div style="padding-bottom:10px;"> Project Management System</div>
    <div> <table style="width:100%;">
            <tr>
                <td>Name</td>
                <td>Task</td>
                <td>Hours</td>
            </tr>
    </table></div>
</body>
</html>

Я создал простую таблицу со уже существующей строкой заголовка. Через С# script я хочу иметь возможность динамически добавлять строки в эту таблицу HTML. Это правильный способ мышления в ASP.NET? Если да, то как я могу это сделать? Я уверен, что мне понадобится кнопка "Добавить", которая добавит новую строку в таблицу, с редактируемыми полями и кнопкой "отправить", которая добавит некоторые вещи в базу данных.

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

Спасибо заранее.

Ответы

Ответ 1

Вы пытались создать таблицу Asp: Table?

<asp:Table ID="myTable" runat="server" Width="100%"> 
    <asp:TableRow>
        <asp:TableCell>Name</asp:TableCell>
        <asp:TableCell>Task</asp:TableCell>
        <asp:TableCell>Hours</asp:TableCell>
    </asp:TableRow>
</asp:Table>  

Затем вы можете добавить строки, как вам нужно, в script, создав их и добавив их в myTable.Rows

TableRow row = new TableRow();
TableCell cell1 = new TableCell();
cell1.Text = "blah blah blah";
row.Cells.Add(cell1);
myTable.Rows.Add(row);

Учитывая ваше описание вопроса, я бы сказал, что вам лучше использовать GridView или Repeater, как упомянуто @Kirk Woll.

EDIT - Кроме того, если вы хотите учиться, не покупая книги, вот несколько сайтов, с которыми вам обязательно нужно ознакомиться:

Блог Скотта Гатри
4 парня из Роллы
MSDN
Code Project Asp.Net

Ответ 2

в дополнение к тому, что сказал Кирк, я хочу сказать вам, что просто "играть" не поможет вам учиться asp.net, и есть много бесплатных и очень хороших учебников.
ознакомьтесь с инструкциями на официальном сайте asp.net и на 4GuysFromRolla сайте

Ответ 3

ASP.NET WebForms не работает таким образом. То, что у вас выше, это просто обычный HTML, поэтому ASP.NET не даст вам возможности добавлять/удалять элементы. Что вы хотите сделать, это использовать элемент управления Repeater или, возможно, GridView. Эти элементы управления будут доступны в коде. Например, Repeater выставляет свойство "Items", на которое вы можете добавлять новые элементы (строки). На кодовом фронте (файл .aspx) вы должны предоставить ItemTemplate, который заглушает то, как выглядят строки тела. В Интернете есть много обучающих программ для повторителей, поэтому я предлагаю вам google, чтобы получить дополнительную информацию.

Ответ 4

public partial class result : System.Web.UI.Page
{
    static DataTable table1 = new DataTable("Shashank");
    static DataSet set = new DataSet("office");


    protected void Page_Load(object sender, EventArgs e)
    {
        lblEmployeeNumber.Text = HttpContext.Current.Request.Form["txtEmployeeNumber"];
        lblFirstName.Text = Request.Form["txtFirstName"];
        lblLastName.Text = Request.Form["txtLastName"];
        lblTitle.Text = Request.Form["txtTitle"];

        Int32 Rcount = Convert.ToInt32(table1.Rows.Count);

        if (Rcount == 0)
        {

            table1.Columns.Add("ID");
            table1.Columns.Add("FName");
            table1.Columns.Add("LName");
            table1.Columns.Add("Title");
            table1.Rows.Add(lblEmployeeNumber.Text, lblFirstName.Text, lblLastName.Text, lblTitle.Text);
            set.Tables.Add(table1);
        }
        else
        {
            if (lblEmployeeNumber.Text != "")
            {
                DataRow dr = table1.NewRow();
                dr["ID"] = lblEmployeeNumber.Text;
                dr["FName"] = lblFirstName.Text;
                dr["LName"] = lblLastName.Text;
                dr["Title"] = lblTitle.Text;
                table1.Rows.Add(dr);
            }
        }

        gvrEmp.DataSource = set;
        gvrEmp.DataBind();

    }
}

Ответ 5

Вам нужно ознакомиться с идеей "Серверная сторона" и код "Клиентская сторона". Это было давно, так как я должен был начать, но вы можете начать с некоторых видеоуроков по http://www.asp.net.

Следует отметить две вещи: если вы используете VS2010, на самом деле у вас есть две разные рамки для ASP.NET: WebForms и ASP.NET MVC2. WebForms является старым унаследованным способом, MVC2 позиционируется MS как альтернатива, а не замена WebForms, но мы увидим, как сообщество обрабатывает его в течение следующих нескольких лет. Во всяком случае, не забудьте обратить внимание на то, о чем говорит данный учебник.

Ответ 6

Вы можете использовать asp: Table в своей веб-форме и создать ее через код:

http://msdn.microsoft.com/en-us/library/7bewx260.aspx

Кроме того, посмотрите asp.net для учебных пособий и т.д.