Vad jag försöker är, att koppla en class(function) till en insert. Jag är en bit på vägen, men jag får detta fel: Det kanske är e.Values["Ort"] som inte fungerar. Testa att skriva den längre upp där du deklarerar keyValue bara för att testa så det inte smäller där det tidigare fungerat: Tack, jag hadde försökt alla tänkbara möjligheter, men det var ditt tips som gjorde det. Hmmm... Gör din trim något?Koppla insert till en class!
<code>
InsertCommand="INSERT INTO [t_Forening] ([Forening], [Tillhor], [Adress], [PostNr], [Ort],
[KontaktNamn], [Epost], [URL], [Klient], [HaveURL], [Free], [Epostsent]) VALUES
(?, ?, ?, ?, ?,?, ?, ?, ?, ?, ?, ?)"
'i classfilen
public static string newTrim(object sText)
{
string nyString = sText.ToString();
nyString.Trim();
return nyString;
}
</code>
I detta fallet så ville jag bara ha bort ev "luft" som kan finnas innan och efter posten som skall
läggas till.
Det går ju inte att koppla detta till (?)-teknen i SQL:en, hur gör man?(dvs om det går).Sv: Koppla insert till en class!
<info>
Objektreferensen har inte angetts till en instans av ett objekt.
</info>
Jag gör så här:
<code>
protected void DetailsView1_ItemInserting(object sender, DetailsViewInsertEventArgs e)
{
string errorText = "";
String keyValue = e.Values["Forening"].ToString();'<--- inga problem här
if (keyValue.Length >= 4)
{
e.Values["Forening"].ToString().Trim();
errorText = "";
}
else
{
errorText = "Klient-namnet är för kort.<br>";
e.Cancel = true;
}
keyValue = e.Values["Ort"].ToString();'<--- här smäller det
if (keyValue.Length >= 2)
{
e.Values["Ort"].ToString().Trim().ToUpper();
errorText = "";
}
else
{
errorText = "Du måste fylla i en korrekt bostadsort.<br>";
e.Cancel = true;
}
'osv
</code>
Jag har ju deklarerat keyValue en gång, kan jag inte återanvända de så här?Sv:Koppla insert till en class!
String keyValue = e.Values["Forening"].ToString();'<--- inga problem härSv: Koppla insert till en class!
Sv:Koppla insert till en class!
Följande kod:
e.Values["Forening"].ToString().Trim();
Påverkar väl inte strängen utan retunerare en ny strän med det trimade värdet?
Så det borde väl vara:
e.Values["Forening"] = e.Values["Forening"].ToString().Trim();
Sedan så skrivs din fel text över. Om första värdet är fel Men inte andra ersätters feltstränen med en tom sträng.
Så det borde vara:
protected void DetailsView1_ItemInserting(object sender, DetailsViewInsertEventArgs e)
{
string errorText = "";
string keyValue;
keyValue = e.Values["Forening"].ToString();
if (keyValue.Length >= 4)
{
e.Values["Forening"] = e.Values["Forening"].ToString().Trim();
}
else
{
errorText += "Klient-namnet är för kort.<br>";
e.Cancel = true;
}
keyValue = e.Values["Ort"].ToString();
if (keyValue.Length >= 2)
{
e.Values["Ort"] = e.Values["Ort"].ToString().Trim().ToUpper();
}
else
{
errorText += "Du måste fylla i en korrekt bostadsort.<br>";
e.Cancel = true;
}
}
Sedan återstår ett problem. Vad händer om man matar in bara mellanslag eller för få tecken följt av mellanslag? Din längkontroll kommer då inte fungera.
Så du borde trimma innan du jämför:
protected void DetailsView1_ItemInserting(object sender, DetailsViewInsertEventArgs e)
{
string errorText = "";
string keyValue;
keyValue = e.Values["Forening"].ToString().Trim();
if (keyValue.Length >= 4)
{
e.Values["Forening"] = keyValue;
}
else
{
errorText += "Klient-namnet är för kort.<br>";
e.Cancel = true;
}
keyValue = e.Values["Ort"].ToString().Trim();
if (keyValue.Length >= 2)
{
e.Values["Ort"] = keyValue.ToUpper();
}
else
{
errorText += "Du måste fylla i en korrekt bostadsort.<br>";
e.Cancel = true;
}
}
Hoppas dessa komentarer är till hjälp.