Jag försöker uppdatera min databas, jaag har följande kod i code behind. Du hämtar ju in ny data till fälten varje gång sidan laddas, Alltså ersätts värdena som du skrivit in med de gamla värdena innan de sparas. Det har du helt rätt i. Men hur fixar jag det? Jag försökte med IsPostBack men det vill inte fungera i alla fall. hmmm jag är nog riktigt trög :( Men jag fattar inte hur du menar att jag ska skriva koden. Om du har tid och lust kan du kanske visa mig? Snälla kan nån hjälpa mig att få ordning på detta? Jag kommer inte på vad som är fel Är det verkligen ingen som kan hjälpa mig med detta? Jag behöver verkligen hjäl, jag hittar inte hur jag ska lösa det. Antagligen är det väl posback som spökar? Åh, vad bra att du skrev så många meddelanden om ingenting. Jag var inne här massor av gånger, men jag ville inte svara eftersom du inte hade tjatat tillräckligt mycket. ;) Sorry att jag inte svarat, jag har varit borta ett par dagar. jag ska försöka fixa till det så som du säger. )(%?#&%& ÅHHH Jag blir tokig på detta, jag fattar barar inte hur jag ska få det att fungera. Jag har suttit hela natten med dyngan nu och det går bara inte att få det att fungera. Jag har fått det att fungera om jag lägger till en sida, men det känns ju lite onödigt. Finns det någon vänlig själ som kan visa mig med kod hur jag ska göra? Min kod ser ut så här nu: Du använder variabeln myID i funktionen updateNews. Ja nu är jag med! Det tog ett tag för poletten att ramla ner. Tack Göran :) Det fungerar perfekt, jag gjorde en funktion som kollar om editID har nåt värde och om den har det så sätts myID till det värdet. Tackar Göran :)Uppdatering vill inte fungera
<code>
protected void Page_Load(object sender, EventArgs e)
{
base.Page.Title = "Golden Eagles - Administratera nyheter";
pnlEdit.Visible = false;
if (Request.QueryString["delId"] != null)
myID = int.Parse(Request.QueryString["delId"]);
deleteNews(myID);
if (Request.QueryString["editID"] != null)
{
myID = int.Parse(Request.QueryString["editId"]);
GridView1.Visible = false;
pnlEdit.Visible = true;
pnlAddNews.Visible = false;
DataSet dsNews = new DataSet();
dsNews = myDB.getOneNews(myID);
if (dsNews != null)
{
foreach (DataRow dr in dsNews.Tables[0].Rows)
{
string header= dr["newsHeader"].ToString();
string ingress = dr["newsIngress"].ToString();
string news = dr["news"].ToString();
txtUpdateHeader.Text = header;
txtUpdateIngress.Text = ingress;
txtUpdateNews.Text = news;
}
}
}
}
protected void updateNews(object sender, EventArgs e)
{
string newHeader = txtUpdateHeader.Text;
string newIngress = txtUpdateIngress.Text;
string newNews = txtUpdateNews.Text;
lblEdit.Text = myDB.updateNews(myID, newHeader, newIngress, newNews);
Response.Redirect("news.aspx");
}
</code>
Denna kod har jag i min klass för databasanrop.
<code>
public string updateNews(int _id, string _header, string _ingress, string _news)
{
SqlConnection conn = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand("editNews", conn);
cmd.CommandType = CommandType.StoredProcedure;
// SQL parameters...
cmd.Parameters.Add(new SqlParameter("@id", SqlDbType.Int, 4));
cmd.Parameters["@id"].Value = _id;
cmd.Parameters.Add(new SqlParameter("@header", SqlDbType.NVarChar, 200));
cmd.Parameters["@header"].Value = _header;
cmd.Parameters.Add(new SqlParameter("@ingress", SqlDbType.NVarChar, 1000));
cmd.Parameters["@ingress"].Value = _ingress;
cmd.Parameters.Add(new SqlParameter("@news", SqlDbType.NVarChar, 4000));
cmd.Parameters["@news"].Value = _news;
try
{
conn.Open(); // Opens the connection...
cmd.ExecuteNonQuery(); // Execute the SQL query...
return "Nyheten är ändrad."; // Return...
}
catch (Exception err)// Error ends up here...
{
return "Det gick inte att ändra nyheten, försök igen.<br />" + err.Message; // Returns...
}
finally
{
conn.Close();// Close the connection...
}
}
</code>
Min lagrade procedur
<code>
ALTER PROC [dbo].[editNews]
@id int,
@header nvarchar(200),
@ingress nvarchar(1000),
@news nvarchar(4000)
AS
IF(EXISTS(SELECT * FROM news WHERE newsID = @id))
BEGIN
UPDATE news SET
newsHeader = @header,
newsIngress = @ingress,
news = @news
WHERE newsID = @id
Select 1
RETURN
END
ELSE
BEGIN
SELECT -1
RETURN
END
</code>
Det som blir fel är att inget uppdateras.Sv: Uppdatering vill inte fungera
Jag ser också att du har glömt klamrarna runt koden som hanterar "delId", vilket gör att funktionen deleteNews alltid anropas, även ifall det inte finns någon sådan querystring.Sv:Uppdatering vill inte fungera
<code>
protected void Page_Load(object sender, EventArgs e)
{
base.Page.Title = "Golden Eagles - Administratera nyheter";
if (!Page.IsPostBack)
{
pnlEdit.Visible = false;
if (Request.QueryString["delId"] != null)
{
myID = int.Parse(Request.QueryString["delId"]);
deleteNews(myID);
}
if (Request.QueryString["editID"] != null)
{
myID = int.Parse(Request.QueryString["editId"]);
GridView1.Visible = false;
pnlEdit.Visible = true;
pnlAddNews.Visible = false;
DataSet dsNews = new DataSet();
dsNews = myDB.getOneNews(myID);
if (dsNews != null)
{
foreach (DataRow dr in dsNews.Tables[0].Rows)
{
string header = dr["newsHeader"].ToString();
string ingress = dr["newsIngress"].ToString();
string news = dr["news"].ToString();
txtUpdateHeader.Text = header;
txtUpdateIngress.Text = ingress;
txtUpdateNews.Text = news;
}
}
}
}
</code>Sv:Uppdatering vill inte fungera
Sv: Uppdatering vill inte fungera
Sv:Uppdatering vill inte fungera
Sv: Uppdatering vill inte fungera
Koden som sätter variabeln körs ju bara första gången som sidan skapas, alltså är den tom när sidan körs igen på postback. Du får ju hämta värdet ifrån querystring även vid postback.Sv:Uppdatering vill inte fungera
HAHA det blir lätt så att man tjatar om ingenting när man inte fattar nåt:) Tacj för hjälpen och tålamodetSv: Uppdatering vill inte fungera
<code>
public partial class admin_news : System.Web.UI.Page
{
db myDB = new db();
public int myID;
protected void Page_Load(object sender, EventArgs e)
{
base.Page.Title = "Golden Eagles - Administratera nyheter";
pnlEdit.Visible = false;
if (!Page.IsPostBack)
{
if (Request.QueryString["delId"] != null)
{
myID = int.Parse(Request.QueryString["delId"]);
deleteNews(myID);
}
if (Request.QueryString["editID"] != null)
{
loadNews();
}
}
}
protected void updateNews(object sender, EventArgs e)
{
string newHeader = txtUpdateHeader.Text;
string newIngress = txtUpdateIngress.Text;
string newNews = txtUpdateNews.Text;
lblEdit.Text = myDB.updateNews(myID, newHeader, newIngress, newNews);
Response.Redirect("news.aspx");
//lblDBAnswer.Text = "Nyheten är uppdaterad";
}
protected void btnAddNews_Click(object sender, EventArgs e)
{
string user = User.Identity.Name.ToString();
string header = txtHeader.Text;
string ingress = txtIngress.Text;
string news = txtNews.Text;
string intern = rblPublic.SelectedValue.ToString();
lblDBAnswer.Text = myDB.addNews(user, header, ingress, news, intern);
}
protected void loadNews()
{
myID = int.Parse(Request.QueryString["editId"]);
GridView1.Visible = false;
pnlEdit.Visible = true;
pnlAddNews.Visible = false;
DataSet dsNews = new DataSet();
dsNews = myDB.getOneNews(myID);
if (dsNews != null)
{
foreach (DataRow dr in dsNews.Tables[0].Rows)
{
string header = dr["newsHeader"].ToString();
string ingress = dr["newsIngress"].ToString();
string news = dr["news"].ToString();
txtUpdateHeader.Text = header;
txtUpdateIngress.Text = ingress;
txtUpdateNews.Text = news;
}
}
}
protected void deleteNews(int myID)
{
myDB.deleteNews(myID);
}
}
</code>Sv:Uppdatering vill inte fungera
Titta nu på var du sätter värdet på varabeln, så ser du att den ligger innanför if-satsen "If (!Page.IsPostBack)". Alltså körs den koden enbart första gången sidan skapas.
När du klickar på knappen så skapas sidan igen, men värdet på myID sätts inte.Sv: Uppdatering vill inte fungera
Sv:Uppdatering vill inte fungera