如何向数据表添加行

本文关键字:添加行 数据表 | 更新日期: 2023-09-27 18:30:37

我已经创建了一个全局数据表,并在页面加载事件中向其添加了列。现在我想在按钮单击事件中向其添加数据。当我执行以下操作时,我收到一个错误说....

列"catID"不属于表

解决方案是什么...我需要使用会话吗?代码如下所示

    public partial class Default2 : System.Web.UI.Page
{
    DataTable dtSelectedSeats = new DataTable();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            dtSelectedSeats.Columns.Add("catID", typeof(string));
            dtSelectedSeats.Columns.Add("seatID", typeof(string));
        }
    }
    protected void seat_Click(object sender, EventArgs e)
    {
        Button button = (Button)sender;
        if (button.BackColor == Color.Cyan)
        {
            button.BackColor = Color.Lime;
            addSeat(button.Text);
        }
    }
    private void addSeat(string seatNo)
    {
        DataRow dr;
        dr = dtSelectedSeats.NewRow();
        dr["catID"] = ddlCategory.SelectedItem.Value.ToString();
        dr["seatID"] = seatNo;
        dtSelectedSeats.Rows.Add(dr);
    }
}

如何向数据表添加行

ASPX:

<asp:DropDownList ID="ddlCategory" runat="server">
<asp:ListItem>a</asp:ListItem>
<asp:ListItem>b</asp:ListItem>
<asp:ListItem>c</asp:ListItem>
</asp:DropDownList>
<asp:Button ID="seat" runat="server" BackColor="Cyan" onclick="seat_Click" Text="1" />
<asp:Button ID="Button1" runat="server" BackColor="Cyan" onclick="Button1_Click" Text="2" />
<asp:Button ID="Button2" runat="server" BackColor="Cyan" onclick="Button2_Click" Text="3" /><br />
<asp:GridView ID="GridView1" runat="server"/>

代码隐藏:

protected void seat_Click(object sender, EventArgs e)
{
    Button button = (Button)sender;
    if (button.BackColor == Color.Cyan)
    {
        button.BackColor = Color.Lime;
        addSeat(button.Text);
    }
}
private void addSeat(string seatNo)
{
    if (Session["dt"] == null)
    {
        Response.Write("DataTable not exist!");
        return;
    }
    DataTable dtSelectedSeats = (DataTable)Session["dt"];
    DataRow dr = dtSelectedSeats.NewRow();
    dr["catID"] = ddlCategory.SelectedItem.Value.ToString();
    dr["seatID"] = seatNo;
    dtSelectedSeats.Rows.Add(dr);
    GridView1.DataSource = dtSelectedSeats;
    GridView1.DataBind();
    Session["dt"] = dtSelectedSeats;
}
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        DataTable dtSelectedSeats = new DataTable();
        dtSelectedSeats.Columns.Add("catID", typeof(string));
        dtSelectedSeats.Columns.Add("seatID", typeof(string));
        Session["dt"] = dtSelectedSeats;
    }
}
protected void Button1_Click(object sender, EventArgs e)
{
    seat_Click(sender, e);
}
protected void Button2_Click(object sender, EventArgs e)
{
    seat_Click(sender, e);
}

只需删除if (!IsPostBack)因为当您单击按钮时,页面将回发。

您的代码对于 DataTable 是完全正确的,您遇到的错误可能是针对某些不同的问题。请正确指定您的错误

在我的头顶上,看起来好像你在错误的事件中添加了行。 我不确定您的 DataTable 在您向其添加列时是否已初始化(从而丢弃您的更改)。 尝试将PageLoad代码放入PagePrerender中,看看这是否会给您带来更好的结果。