HA !... :) så fik jeg det til at virke... jeg skal såmen bare huske at kalde this.OnInit() efter at jeg har lavet mine ændringer :)
http://www.burningice.dk/eksperten.dk/366414/remove_from_ds.aspx<%@Import Namespace="System.Data" %>
<script language="c#" runat="server">
DataSet ds;
void Page_Init(object sender, EventArgs e) {
ds = (DataSet)Session["DataSet"];
RenderButtons();
}
void DynamicButton_Click(object sender, EventArgs e) {
int id = int.Parse(((Button)sender).ID);
GetRow(id).Delete();
ds.AcceptChanges();
buttons.Controls.Clear();
this.OnInit(e);
}
DataRow GetRow(int id) {
foreach (DataRow dr in ds.Tables[0].Rows) {
if (dr["id"].ToString() == id.ToString()) {
return dr;
}
}
throw new Exception();
}
void RenderButtons() {
if (ds != null) {
foreach (DataRow dr in ds.Tables[0].Rows) {
AddButton(dr);
}
}
}
void AddButton(DataRow dr) {
Button b = new Button();
b.ID = dr["id"].ToString();
b.Text = (string)dr["data"];
b.BackColor = System.Drawing.Color.White;
b.BorderColor = System.Drawing.Color.White;
b.Click += new System.EventHandler(DynamicButton_Click);
buttons.Controls.Add(b);
buttons.Controls.Add(new LiteralControl("<br /> <br />"));
}
void btnMakeTable_Click(object sender, EventArgs e) {
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("id", typeof(int)));
dt.Columns.Add(new DataColumn("data", typeof(string)));
for (int i = 0; i < 10; i++) {
DataRow dr = dt.NewRow();
dr["id"] = i;
dr["data"] = "data for row "+ i;
dt.Rows.Add(dr);
}
DataSet ds = new DataSet();
ds.Tables.Add(dt);
Session["DataSet"] = ds;
buttons.Controls.Clear();
this.OnInit(e);
}
</script>
<form runat="server">
<asp:placeholder id="buttons" runat="server" />
<br /><br />
<asp:button id="maketable" onclick="btnMakeTable_Click" Text="maketable" runat="server" />
</form>
<asp:label id="info" runat="server" />