如何动态地向ASP.NET中的表添加行?

时间:2010-09-24 16:49:36

标签: c# asp.net visual-studio-2010

所以今天我开始学习ASP.NET。不幸的是我没有在网上找到任何好的教程,而且我现在买不起书籍,所以我不得不在Visual Studio 2010中创建一个ASP.NET Web应用程序,只需使用默认的项目设置

到目前为止,这是我在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>

我创建了一个包含标题行的简单表格。通过C#脚本,我希望能够动态地向这个HTML表添加行。这是ASP.NET中正确的思考方式吗?如果是这样,我该怎么做?我确定我需要一个“添加”按钮,它会在表格中添加一个新行,带有可编辑的字段,以及一个“提交”按钮,可以将一些内容添加到数据库中。

基本上只是简单了解如何做到这一点将会非常有帮助。如果有人知道任何可以帮助我解决这类问题的好教程或网站,请告诉我。

提前致谢。

10 个答案:

答案 0 :(得分:44)

你有没有尝试过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>  

然后,您可以根据需要在脚本中添加行,方法是创建它们并将它们添加到myTable.Rows

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

考虑到你的问题描述,我会说你最好使用@Kirk Woll提到的GridView或Repeater。

编辑 - 此外,如果您想在不购买书籍的情况下学习这里有一些您绝对需要熟悉的网站:

Scott Guthrie's Blog
4 Guys from Rolla
MSDN
Code Project Asp.Net

答案 1 :(得分:7)

除了Kirk所说的我想告诉你的是,只是“玩弄”不会帮助你学习asp.net,而且还有很多免费且非常好的教程。
看看asp.net官方网站教程和4GuysFromRolla网站

答案 2 :(得分:4)

ASP.NET WebForms无法以这种方式工作。你上面的内容只是普通的HTML,所以ASP.NET不会给你任何添加/删除项目的工具。你想要做的是使用Repeater控件,或者可能是GridView。这些控件将在代码隐藏中提供。例如,Repeater将公开一个“Items”属性,您可以在该属性上添加新项(行)。在代码前端(.aspx文件)中,您将提供一个ItemTemplate,用于查明正文行的外观。网上有很多关于转发器的教程,所以我建议你去谷歌那里获取更多信息。

答案 3 :(得分:3)

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();

    }
}

答案 4 :(得分:2)

您需要熟悉“服务器端”与“客户端”代码的概念。自从我开始以来已经有很长一段时间了,但你可能想从http://www.asp.net的一些视频教程开始。

有两点需要注意:如果您使用的是VS2010,那么实际上您可以从ASP.NET中选择两种不同的框架:WebForms和ASP.NET MVC2。 WebForms是一种古老的传统方式,MV被定位为MS作为替代WebForms的替代方案,但我们将看到社区如何在未来几年内处理它。无论如何,请务必注意给定教程正在讨论的内容。

答案 5 :(得分:2)

您可以在Web表单中使用asp:Table并通过代码构建它:

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

另外,请查看asp.net以获取教程等。

答案 6 :(得分:2)

为表中的行动态创建

见下面的链接

http://msdn.microsoft.com/en-us/library/7bewx260(v=vs.100).aspx

答案 7 :(得分:1)

通过JS添加的链接 https://www.youtube.com/watch?v=idyyQ23joy0

请参阅以下链接。这可以帮助您动态添加行: https://www.lynda.com/C-tutorials/Adding-data-HTML-tables-runtime/161815/366843-4.html

答案 8 :(得分:-1)

liftM2 :: Monad m => (a -> b -> c) -> m a -> m b -> m c
return :: Monad m =>  a            -> m a
liftM  :: Monad m => (a -> b)      -> m a -> m b

答案 9 :(得分:-2)

您需要在HTML中使用JavaScript,并确保使用表单。您最终可以使用Ajax方法序列化数据,以将数据从HTML推送到数据库中