Jag försöker göra en tabell själv i codebehind. När du har skickat ut sidan, kommer ditt Dataset och alla andra objekt att försvinna om du inte sparar det nånstans..Datagrid utan databas
som jag ser det så skapar jag här en tabell med några kolumner och en rad.
Datagriden fylls och allt ser bra ut, men nu vill jag ju kunna lägga till och redigera raderna, men det verkar som om jag inte har tillgång till datasetet. Hur ska jag bygga upp det för att jag ska kunna arbeta med mitt dataset. Som det är nu så klagar den på
Object reference not set to an instance of an object.
dr = dt.NewRow(); i Button1_Click()
<code>
DataSet ds;
DataTable dt;
DataRow dr;
private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
{
ds = new DataSet();
dt = new DataTable("minTabell");
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Namn", typeof(string));
dt.Columns.Add("Typ", typeof(string));
dt.Columns.Add("beskrivning", typeof(string));
ds.Tables.Add(dt);
dr = dt.NewRow();
dr["ID"] = "1";
dr["Namn"] = "Namn";
dr["Typ"] = "String";
dr["beskrivning"] = "besk";
dt.Rows.Add(dr);
BindGrid();
}
}
public void BindGrid()
{
DataGrid1.DataSource = ds;
DataGrid1.DataBind();
}
private void Button1_Click(object sender, System.EventArgs e)
{
dr = dt.NewRow();
dr["ID"] = "2";
dr["Namn"] = "Namnasdf";
dr["Typ"] = "Stringasdf";
dr["beskrivning"] = "beskasdf";
dr["langd"] = 1;
dr["decimaler"] = 1;
dr["mask"] = "[a-z]";
dt.Rows.Add(dr);
BindGrid();
}
</code>Sv: Datagrid utan databas
Servern minns inte vad du hade tidigare om det inte lagras undan. Datagrid sparas default i Viewstate om man inte sänger av det. (det är därför som du kan komma åt griddens data, när du har postat tillbaks sidan). Du måste göra samma sak med ditt Dataset om du ska ha den här lösningen. Spara det i Viewstate (.Add), alternativt i Session. Har du mycket data är det inte så snyggt. (det blir ju dubblerat dels i grid och dels i Viewstate) Har du lite mindre data så är det OK att göra så, tycker jag. :)
/Ola