如何向数据表添加行
本文关键字:添加行 数据表 | 更新日期: 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中,看看这是否会给您带来更好的结果。