我的问题是每次我尝试在我的 CMS 中更新时,它只会更新每一列/每一行。例如:我更新Test 1 -> Test 2
同时我有测试4
但是由于我将测试 1 更改为 2,因此测试 4 -> 测试 2 它也简单地改变了它。
它们仍然可以按 ID 正常工作,当我删除它们时,它们会单独删除,因此唯一与所有内容重叠的功能是更新。
我现在将发布我的代码(这是我学到的,不要对安全性或 w/e 发表评论)只需要修复此问题,因此它只会更新选定的 ID 行。
第一的:
public DataRow GetById(string ID)
{
strSQL = "SELECT ID, clnOverskrift, clnTekst "
+ "FROM tblForside "
+ "WHERE ID=@ID";
objCMD = new MySqlCommand(strSQL);
objCMD.Parameters.AddWithValue("@ID", ID);
return objData.GetData(objCMD, objCon).Rows[0];
}
public void Update(PropertyForside Pro)
{
strSQL = "UPDATE tblForside SET "
+ " clnOverskrift=@Overskrift, clnTekst=@Tekst ";
objCMD = new MySqlCommand(strSQL);
objCMD.Parameters.AddWithValue("@Overskrift", Pro.Overskrift);
objCMD.Parameters.AddWithValue("@Tekst", Pro.Tekst);
objData.ModifyData(objCMD, objCon);
}
我将同时使用 GetById 和 Update 这就是我同时包含两者的原因。如果您需要在这个“工厂”中了解更多信息,我会发布它。
我明白了:
FactoryForside fac = new FactoryForside();
PropertyForside Pro = new PropertyForside();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataRow dr = fac.GetById(Request.QueryString["ID"]);
txtOverskrift.InnerText = dr["clnOverskrift"].ToString();
txtText.InnerText = dr["clnTekst"].ToString();
}
}
protected void btnGem_Click(object sender, EventArgs e)
{
Pro.Overskrift = txtOverskrift.InnerText;
Pro.Tekst = txtText.InnerText;
Pro.ID = int.Parse(Request.QueryString["ID"]);
fac.Update(Pro);
Response.Redirect("RedigerForside.aspx");
}
我使用 InnerText 将 TextAreas 与 NiceEdit 一起使用。
添加新的工作,并如前所述删除 - 只有这个更新的东西不能正常工作。它在浏览器中正确显示 ID "EditForside.aspx?id=13"
,但似乎也选择了其他所有 ID
希望您能够帮助我。