problem med while og reader.Read()
Hej Eksperter,Jeg har et problem men en funktion som skal bygge en menu i form af en <ul> liste. Min kode ser sådan her ud:
public string getMenu(int menuId, int masterId, string root){
string menu = "<ul id='" + @menuId + "'>";
string myClass ="";
string myLabel = "";
int myId = 0;
SqlConnection menu_myConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["dbconnect"].ConnectionString);
SqlCommand menu_command = new SqlCommand("get_menu_items", menu_myConnection);
menu_command.CommandType = CommandType.StoredProcedure;
menu_command.Parameters.Add("@masterid", SqlDbType.Int);
menu_command.Parameters.Add("@root", SqlDbType.VarChar);
menu_command.Parameters["@masterid"].Value = @masterId;
menu_command.Parameters["@root"].Value = @root;
menu_command.Connection.Open();
SqlDataReader menu_reader = menu_command.ExecuteReader(CommandBehavior.CloseConnection);
if (menu_reader.Read())
{
while(menu_reader.Read())
{
if (menu_reader["use_phrase"].ToString() == "true")
{
myLabel = GetPhrase(menu_reader["button_phrase"].ToString());
}
else {
myLabel = menu_reader["button_label"].ToString();
}
if(@menuId.ToString() == menu_reader["id"].ToString()){
myClass = "avtive";
}
else{
myClass = "";
}
menu += "<li id='"+ menu_reader["id"].ToString()+"' class='"+myClass+"'><a href="+menu_reader["id"].ToString()+">"+myLabel+"</a>";
myId = int.Parse(menu_reader["id"].ToString());
//getMenu(1,myId, menu_reader["root"].ToString());
menu += "</li>";
}
}
else
{
menu += "no items";
}
menu_reader.Close();
menu_command.Connection.Close();
menu += "</ul>";
return menu;
}
Jeg får ingen fejl meddelser, men det output jeg får er :<ul id="1"></ul>. Så det virker som om at den springer hele if(menu_reader.Read()) over, for hvis der ikke var noget data i DB'en som passer med parameterne skulle der jo bare stå "no items" i mellem <ul> tags'ene men det er der ikke? Jeg har på fornemmelsen at det er while(menu_reader.Read()) der skaber problemmerne, men jeg kan ikke lige se hvor fejlen sku være ? Er den nogle der kan hjælpe.