Har ett form med några TextBox som jag fyller i. Innan jag skickar dom till Access db så vill jag testa min SQL INSERT INTO med en Response.Write i Code Behind. Men jag får inte ut något när jag klickar på send: Gert, Lägg ut en en "slask-textbox" och sätt texten på den in codebehind istället Har gjort så här men fastnat: Du får nog kolla in lite hur DropDownList fungerar. Nör man går in på MSDN eller söker på DropDownlist via hjälp i Visual Studio 2003 så står det inga bra exempel som man själv vill använda fr en databas. Om man går in på http://msdn.microsoft.com/ och direkt på första sidan skriver "asp.net dropdownlist" i sökrutan så får man upp ett antal sökresultat. Överst på listan när jag sökte står "DropDownList Web Server Control". På den listan finner man allt man behöver veta om DropDownList. MSDN är den bästa källan när man vill lära sig kontrollerna. Vill inte verka dum i huvet, men något fel har jag. För jag får det inte att fungera. har gjort precis som exemplet http://support.microsoft.com/kb/312489 Hmm, nu var jag lite snabb. Såg inte att du satte ihop variablerna. Förstår inte vad som är fel, eftersom att DropDown:en fungerar när jag öppnar sidan. Alltså jag får ut värdena från db.. Men inte till Labeln NamnVal? Aha, nu är jag med. Visst jag som är dum i huvudet. :) Ok, då är felet att funktionen Add_Click aldrig körs. Nej det får man väl skriva själv eller? För det finns väl inte i Properties? Ja, det får man skriva dit själv om man inte låter Visual Studio sköta det genom att man dubbelklickar på knappen i design-läget. Tack Patrik för att du orkar med oss Newbies. Hade ju läst Tutorials som du skrva att man behöver göra. Inget att tacka för. Hjälper gärna till, särskilt när jag ser att frågeställaren faktiskt ansträngt sig. :) Efter att ha kopierat scriptet i Add_Click och raderat allt, tagit bort On_Click sen gått in i design läget och dubbelklicka på Add knappen. Kopierat tillbaka då kom Response.Write i Asp.NET
<Code C#>{
Response.Write(SpelareVal);
}</Code>Sv: Response.Write i Asp.NET
Det är inte din utskrift som är fel - det är troligen sättet som du fyller i variablen SpelareVal.Sv: Response.Write i Asp.NET
myTextTextBox.Text = SpelareVal
Om det nu är så att din SQL ligger i SpelareVal (om jag förstod det rätt)Sv: Response.Write i Asp.NET
SpelareVal är en DropDownList Och vill ha dels ut ValueField "ID" och TextField "SpelareNamn"
<Code c#>
SpelareVal.DataSource = myCmd.ExecuteReader();
SpelareVal.DataTextField = "SpelareNamn";
SpelareVal.DataValueField = "ID";
SpelareVal.DataBind();
private void Add_Click(object sender, System.EventArgs e)
{
string Slask = (SpelareVal.DataTextField) & (SpelareVal.DataValueField);
SQLSlask.Text = Slask ;
}Sv: Response.Write i Asp.NET
din kod
string Slask = (SpelareVal.DataTextField) & (SpelareVal.DataValueField);
får du inte ut nåt med.
Vad du vill ha ut är SpelareVal.SelectedValue och .SelectedItem
Vad du har valt är ju det du använder när du bestämmer vilket värde som ska hamna som id och text när du databinder.
Ett tips till alla som läser detta. Om man ska använda en kontroll man inte använt tidigare så kolla upp den på MSDN och ta reda på hur den skall användas. ;)Sv: Response.Write i Asp.NET
Eller gå in på din Blog sida där Du tar upp hur ASP.NET fungerar! Men varför inte på Svenska också, så alla vi som inte kan fack engelska förstår? Alla har ju inte haft fördelen att få kunna läsa Data i skolan :(
Tack för din hjälp Patrik, du och alla Ni andra är ett stort stöd för oss okunniga.
GertSv: Response.Write i Asp.NET
Det är bättre att gå direkt till nätplatsen istället för att söka genom VS.NET tycker jag.
Du nämner att det "står inga bra exempel som man själv vill använda fr en databas."
Saken är den att du kommer aldrig att hitta exempel som exakt passar din lösning. Man måste lära sig vad en kontroll kan och hur man använder den. Då kommer man själv på hur man ska använda den i en lösning. En DropDownList t.ex. behöver inte ha med en databas att göra. Men om man lär sig 1. Kontrollen och 2. Hur man använder en databas så kopplar man samman de två för att lösa sitt problem.
Om man hittar ett exempel så måste man kunna grunderna för att kunna anpassa exemplet till sin egen lösning.
Min blogg skriver jag på engelska för att jag då når en större "publik". Den krassa verkligheten är även att de flesta, och bästa, resurerna på nätet och i böcker är på engelska. Tyvärr så är det så att om man inte kan engelska så missar man mycket.
När det gäller just ASP.NET så är det jätteviktigt att man inser att det inte bara är att köra igång. ASP.NET är toppen på isberget .NET. Som jag skriver i min blogg så kan man slänga ihop sajter genom att bara lära sig grunderna i ASP.NET genom att köra igenom alla de tutorials som finns på http://samples.gotdotnet.com/quickstart/ och sätta ihop avancerade nätplatser. Men så fort man behöver trixa med kod eller anpassa kontroller så är det kört.
Man måste lära sig Objekt-Orienterad Programmering.
Man måste lära sig C# eller VB.NET.
Man måste lära sig vad .NET ramverket innehåller för namnrymnder, funktioner och metoder.
Man måste lära sig vad ASP.NET har för inbyggda kontroller.
Utan allt detta fastnar man hela tiden och ofta så kommer man inte förstå när någon ger ett exempel.
.NET är stort, det kan vara komplicerat, det kräver mycket jobb att lära sig, men vinsten kan bli enorm. ;)Sv: Response.Write i Asp.NET
Själva DropDownList fungerar men jag får inte värdena på SpelareNamn och Id till Labeln. Den bara uppdaterar men skriver inte ut värdet.
Se min kod:
private void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack)
{
string SpelareCmd = "SELECT ID,Namn & ' ' & ENamn AS SpelareNamn FROM Medlemmar WHERE Lag = 'A'";//'" + LagVal + "'";
OleDbConnection myConn = new OleDbConnection(
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath(@"db\Bowlingresultat.mdb"));
OleDbCommand myCmd = new OleDbCommand(SpelareCmd, myConn);
myConn.Open();
SpelareVal.DataSource = myCmd.ExecuteReader();
SpelareVal.DataTextField = "SpelareNamn";
SpelareVal.DataValueField = "Id";
SpelareVal.DataBind();
myConn.Close();
SpelareVal.Items.Insert(0,"<-- Välj -->");
}
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void Add_Click(object sender, System.EventArgs e)
{
string itemText = SpelareVal.SelectedItem.Text;
string itemValue = SpelareVal.SelectedItem.Value;
NamnVal.Text = string.Format(
"Selected Text is {0}, and Value is {1}", itemText,itemValue);
}
Sv: Response.Write i Asp.NET
Det är din sql-sats som är fel:
<code>
"SELECT ID,Namn + ' ' + ENamn AS SpelareNamn FROM Medlemmar WHERE Lag = 'A'";
</code>Sv: Response.Write i Asp.NET
Sv: Response.Write i Asp.NET
För att felsöka lite.
Prova:
<code>
NamnVal.Text = itemText;
</code>
och sedan ett försök med
<code>
NamnVal.Text = "ett test";
</code>
Så ska vi se om vi kan lokalisera felet lite bättre.Sv: Response.Write i Asp.NET
<asp:label id="NamnVal" runat="server" ForeColor="Red" Font-Size="XX-Small" Font-Bold="True"
Font-Names="Verdana"></asp:label>
Sv: Response.Write i Asp.NET
Hur ser hela ditt formulär ut? Har du en OnClick="Add_Click" på den knapp som ska submitta formuläret?Sv: Response.Write i Asp.NET
Har Add_Click i code behind: Ska väl vara så eller?
Fick följande fel:
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.
Compiler Error Message: CS0122: 'UBC90.Nyaresultat.Add_Click(object, System.EventArgs)' is inaccessible due to its protection level
Source Error:
Line 64: </TR>
Line 65: <tr>
Line 66: <td style="WIDTH: 70px"><asp:button id="Add" runat="server" OnClick="Add_Click" Text="Visa"></asp:button></td>
Line 67: <td style="WIDTH: 44px"><asp:button id="Cancle" runat="server" Text="Ã…ngra"></asp:button></td>
Line 68: </tr>
Sv: Response.Write i Asp.NET
Felet du får nu beror på att din funktion är privat, vilket gör att .aspx sidan inte har tillgång till den.
Ändra till
<code>
protected void Add_Click(object sender, System.EventArgs e)
</code>
eller
<code>
public void Add_Click(object sender, System.EventArgs e)
</code>Sv: Response.Write i Asp.NET
Har en testsida där jag har ListItemValues i Formuläret och där har jag inte OnClick="Add_Click" och det fungerar.
Är det skillnad när man får Värdena fr en db?
Ha en trevlig kväll! Sv: Response.Write i Asp.NET
Nej, det är ingen skillnad på att få värdena från en db.
Om du jämför din testsida med den här så kanske du ser några skillnader.
T.ex. om du använder Visual Studio .NET och lägger till en kontroll i design-läge och sen dubbelklickar på den så läggs en Handler till i Initialize funktionen. Då behöver man inte lägga till någon OnClick i taggen. Om man använder C# är det faktiskt viktigt att man INTE lägger till en OnClick eftersom funktionen då körs två gånger. Det behöver man inte tänka på i VB.NET.
Ha en trevlig kväll!Sv: Response.Write i Asp.NET
this.Add.Click += new System.EventHandler(this.Add_Click);
in under Web Form Designer Generated Code in.
Så nu fungerar det som det ska....