Hej! Lite Pseudokod: Jag får det inte att fungera. Såhär ser min funktion för att spara data i databasen ut: Efter lite pysslande och effektiviserande av hur jag anropar databas och använder connectionobjektet så löste det sig faktiskt! Tack för hjälpen!Uppdatera DataGrid efter INSERT?
Jag har en ASP-sida med ett formulär och ett DataGrid. Via formuläret kan man lägga in poster i en accessdatabas och det DataGrid som finns på sidan ska sedan reflektera det som finns i databasen.
Det funkar sisådär. När man gör submit på formuläret sparas data i databasen med mitt DataGrid uppdateras inte förrän man laddar om sidan. Om man lägger in flera poster på raken så ligger mitt DataGrid alltid "en post efter", dvs. den senast inlagda posten syns inte i DataGrid.
Har ni några tips på hur jag löser detta? Jag tror att problemet har att göra med ordningen jag gör saker och ting i...
Tack på förhand!
ThomasSv: Uppdatera DataGrid efter INSERT?
Sub Page_Load
if not page.ispostback then
loadDataGrid()
end if
end sub
sub AddPost()
'--kod för att lägga till post i databas
loadDataGrid()
end sub
sub loadDataGrid()
'--kod för att hämta poster från databas och ladda upp i datagrid
end subSv:Uppdatera DataGrid efter INSERT?
protected void SaveTimereport_OnClick(Object sender, EventArgs e)
{
OleDbConnection cn = new OleDbConnection(ConfigurationManager.ConnectionStrings["DataConnection"].ConnectionString);
cn.Open();
OleDbCommand cm = new OleDbCommand("INSERT INTO timereports (proj_id, emp_id, role_id, timetype_id, time_date, time_hours) VALUES (@proj_id, @emp_id, @role_id, @timetype_id, @time_date, @time_hours)", cn);
cm.Parameters.AddWithValue("@proj_id", lbxProjId.SelectedValue);
cm.Parameters.AddWithValue("@emp_id", emp_id);
cm.Parameters.AddWithValue("@role_id", lbxRoleId.SelectedValue);
cm.Parameters.AddWithValue("@timetype_id", lbxTimetypeId.SelectedValue);
cm.Parameters.AddWithValue("@time_date", tbxDate.Text);
cm.Parameters.AddWithValue("@time_hours", tbxHours.Text);
try
{
cm.ExecuteNonQuery();
}
catch (Exception ex)
{
}
finally {
GetReportedTime(emp_id);
cn.Close();
}
}
Såhär ser min kod för att hämta data till mitt DataGrid ut:
private void GetReportedTime(string myEmp_id)
{
dgReportedTime.DataSource = null;
OleDbConnection cn = new OleDbConnection(ConfigurationManager.ConnectionStrings["DataConnection"].ConnectionString);
cn.Open();
OleDbCommand cm = new OleDbCommand();
cm.CommandText = "SELECT clients.client_name, projects.proj_name, roles.role_name, timetypes.timetype_name, timereports.time_date, timereports.time_hours FROM timetypes INNER JOIN ((clients INNER JOIN projects ON clients.client_id = projects.client_id) INNER JOIN (roles INNER JOIN timereports ON roles.role_id = timereports.role_id) ON projects.proj_id = timereports.proj_id) ON timetypes.timetype_id = timereports.timetype_id WHERE (((timereports.emp_id)=@emp_id)) ORDER BY timereports.time_date";
cm.Parameters.AddWithValue("emp_id", myEmp_id);
cm.Connection = cn;
dgReportedTime.DataSource = cm.ExecuteReader(CommandBehavior.CloseConnection);
dgReportedTime.DataBind();
}
Såhär ser min Page_Load ut:
if (!(Page.IsPostBack)) {
GetLastReportDate(emp_id);
GetProjects();
GetRoles();
GetTimetypes();
GetReportedTime(emp_id);
}
Sv: Uppdatera DataGrid efter INSERT?