I icaaq Medlem sedan okt. 2000 5 273 inlägg Frågan 1 sep. 2004 08:19 #1 Tjenare.
Jag får in värden i en querystring. Typ av denna variant
*.aspx?parent=2
*.aspx?parent=2,3
*.aspx?parent=2,3,55
Sedan har jag ett värde kanske 3, Hur kollar jag smidigast om just mitt värde finns i min querystring.
Jag har kollat lite på IndexOf men jag får det inte riktigt att fungera....
nån som kan hjälpa mig på traven?
mv icaaq
cyprys Medlem sedan dec. 2000 3 563 inlägg Dim qInt as string() = split(request.querystring("parent"), ",")
Dim i as integer
dim myValue as integer = 3
for i = lbound(qInt) to ubound(qInt)
if qInt(i) = myValue then
' Hittat
exit for
end if
next
D Dino Medlem sedan sep. 2001 1 914 inlägg if(Request.Querystring("parent").ToString().IndexOf("3") != -1)
Response.Write("Ladies and gentlemen, we got a three");
Marcus E Medlem sedan maj 2002 1 466 inlägg Dinos förslag tar inte hänsyn till att tal som innehåller 3. Dessutom behövs inte ToString eftersom QueryString betyder just frågesträng (och inte frågenummer).
cyprys kod skulle fungera om "," angavs som delimiter. Dessutom fungerar For Each bra istället.
cyprys Medlem sedan dec. 2000 3 563 inlägg
Marcus E skrev:
cyprys kod skulle fungera om "," angavs som delimiter. Dessutom fungerar For Each bra istället.
Självklart var det min tanke. Redigerat. :)
I icaaq Medlem sedan okt. 2000 5 273 inlägg Nu vill jag tabort värdet i min string[] men jag får det inte att fungera :(
Jag tar det från början.
1. Jag sätter värdet på en string [] qInt här:
[red]
public class menu : System.Web.UI.UserControl
{
public string[] qInt = getQuery();
public Table menuTable = new Table();
..
..
[/red]
och getQuery ser ut så här:
[red]
private static string[] getQuery()
{
string[] tempqInt;
if(HttpContext.Current.Request.QueryString["parent"] != null)
{
tempqInt = HttpContext.Current.Request.QueryString["parent"].Split(new char[] {','});
}
else
{
tempqInt = "".Split(new char[] {','});
}
return tempqInt;
}
[/red]
Denna ska nog finslipas lite......
2. Nu vill jag i nedanstående kodsnutt tabort ett värde som jag skickar in i funktionen.
[red]
private bool CheckArray(int myParent)
{
bool found = false;
System.Text.StringBuilder newArray = new System.Text.StringBuilder();
Debug.WriteLine("????????????????");
Debug.WriteLine("qInt har innan körningen= "+ qInt.Length);
for( int i = 0; i < this.qInt.Length; i++)
{
Debug.WriteLine(myParent.ToString() +"=="+ qInt[i]);
if( qInt[i] == myParent.ToString())
{
//if(newArray.Length > 0) newArray.Append(',');
//newArray.Append
found = true;
}
else
{
if(newArray.Length > 0) newArray.Append(',');
newArray.Append(qInt[i]);
}
}
qInt = newArray.ToString().Split(new char[] {','});
Debug.WriteLine("qInt har efter körningen= "+ qInt.Length);
Debug.WriteLine(found);
Debug.WriteLine("????????????????");
return found;
}
[/red]
Men värdet i qInt försvinner inte utan det finns där igen när jag kör funktionen......Jag kallar alltså på checkArray i en loop...
vad har jag gjort för fel?
mv icaaq
I icaaq Medlem sedan okt. 2000 5 273 inlägg Kan jag inte ändra qInt´s värden på detta sätt?
mv icaaq
D Dino Medlem sedan sep. 2001 1 914 inlägg public class menu : System.Web.UI.UserControl
{
StringCollection sc = new StringCollection();
private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
Grr();
}
private void Grr()
{
sc.AddRange("1,34,23,12,4".Split(new char[] {','}));
bool a = CheckArray(34);
}
private bool CheckArray(int myParent)
{
bool found = false;
string temp = null;
foreach(string s in sc)
{
if(s == myParent.ToString())
{
temp = s;
found = true;
}
}
sc.Remove(temp);
return found;
}
}