Eftersom FelText är av typen varchar måste du ha hakar runt texten(i SQL frågan). Och varför blanda både med och utan parametrar? Tycker du parametrar är så mycket jobbigare? Man får ju mycket bättre överblick annars.
Det fungerade visst då. Sessionen var slut. Har ett annat delikat problem. Jag vill rendera ett dataset (vilket fungerar nu) och göra så att varje post blir "editerbar" genom att man klickar på den.
Ganska standard alltså men får inte rätt på't. Då jag klickar på Editera försvinner hela datasetet från sidan och hela tabellen som ska presenteras.
Postar .cs & .aspx-filen:
namespace mysite
{
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;
using System.Configuration;
public class errors : System.Web.UI.Page
{
public System.Web.UI.WebControls.DataGrid MyDataGrid;
public System.Web.UI.WebControls.RequiredFieldValidator errorReqVal;
public System.Web.UI.WebControls.Label Message;
public System.Web.UI.WebControls.TextBox error;
public System.Web.UI.WebControls.Label Label1;
public System.Web.UI.WebControls.RequiredFieldValidator edit_errorReqVal;
public System.Web.UI.WebControls.TextBox edit_error;
SqlConnection myConnection;
protected void Page_Load(Object Src, EventArgs E)
{
myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
if (!IsPostBack)
{
BindGrid();
Page.DataBind();
}
}
public void MyDataGrid_Edit(Object sender, DataGridCommandEventArgs E)
{
MyDataGrid.EditItemIndex = (int)E.Item.ItemIndex;
BindGrid();
}
public void MyDataGrid_Cancel(Object sender, DataGridCommandEventArgs E)
{
MyDataGrid.EditItemIndex = -1;
BindGrid();
}
public void MyDataGrid_Update(Object sender, DataGridCommandEventArgs E)
{
if (Page.IsValid)
{
string updateCmd = "UPDATE Feltexter SET FelText = '@FelText' WHERE FelAnvID = @AnvID";
SqlCommand cmd = new SqlCommand(updateCmd, myConnection);
cmd.Parameters.Add("@FelText", SqlDbType.NVarChar, 40).Value = edit_error.Text;
cmd.Parameters.Add("@AnvID", SqlDbType.Int, 10).Value = Session["UserID"];
cmd.Connection.Open();
cmd.ExecuteNonQuery();
MyDataGrid.EditItemIndex = -1;
cmd.Connection.Close();
BindGrid();
}
else
{
}
}
public void AddError_Click(Object sender, EventArgs E)
{
if (Page.IsValid)
{
String insertCmd = "insert into Feltexter (FelText, FelAnvID) values (@FelText, @FelAnvID)";
SqlCommand myCommand = new SqlCommand(insertCmd, myConnection);
myCommand.Parameters.Add(new SqlParameter("@FelText", SqlDbType.NVarChar, 300));
myCommand.Parameters["@FelText"].Value = error.Text;
myCommand.Parameters.Add("@FelAnvID", SqlDbType.Int, 400);
myCommand.Parameters["@FelAnvID"].Value = Session["UserID"];
myCommand.Connection.Open();
try
{
myCommand.ExecuteNonQuery();
Message.Text = "<b>Ditt felmeddelande har lagts till.</b>";
}
catch (SqlException e)
{
if (e.Number == 2627)
Message.Text = "Fel: En post med samma primärnyckel existerar redan.";
else
Message.Text = "Fel: Fältet kunde inte läggas till. : " + e.Message;
Message.Style["color"] = "red";
}
myCommand.Connection.Close();
}
BindGrid();
}
public void BindGrid()
{
SqlDataAdapter myCommand = new SqlDataAdapter("select * from Feltexter where FelAnvID = "+Session["UserID"]+"", myConnection);
DataSet ds = new DataSet();
myCommand.Fill(ds, "Feltexter");
MyDataGrid.DataSource=ds.Tables["Feltexter"].DefaultView;
MyDataGrid.DataBind();
}
}
}
Eh, det där är från dokumentationen (ett exempel). Inte mitt fel. :e
Jag har tagit bort det men fortfarande utan önskat resultat. Det händer inget när jag klickar "editera". :(