Jag blev lite osäker på vart jag skulle lägga tråden, hoppas det blir bra här. Jag försöker skapa en omröstning (i asp.net C#) och använder mig av en radiobuttonlist där alla värden hämtas från en databas. Problemet är att jag inte kan få fram vilket värde användaren har valt. När du inte har ett värde valt så försöker man skicka Null, som inte tillåts, därav felmeddelandet. Du kan testa detta om det hjälper: Hmm jag får Inget värde valt. Hej, Vill du ha ett värde valt från start? Annars sätter du bara: Nej jag vill inte ha ett värde valt från start. Hmm, har jag inte helt fel för mig sätter du bara Haha, men nu vill jag inte ha ett värde valt från start vilket jag skrev i mitt förra inlägg :) Hehe, det är sent, så lätt att man missförstår :) Tackar, det fungerade utmärkt!Värde ur radiobuttonlist
Vad jag hittat på msdn ska man använda:Label1.Text = poll.SelectedItem.Text;
Men då får jag felet:
Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
Sv: Värde ur radiobuttonlist
VB.NET
<code>
If poll.SelectedValue <> "" Then
Label1.Text = poll.SelectedValue
Else
Label1.Text = "Inget värde valt"
End If
</code>
C#
<code>
if (poll.SelectedValue != "")
{
Label1.Text = poll.SelectedValue;
}
else
{
Label1.Text = "Inget värde valt";
}
</code>Sv:Värde ur radiobuttonlist
Jag skickar med mer av koden, jag har kanske gjort någon tabbe någon annan stans i koden.protected void Page_load(Object sender, EventArgs e)
{
OleDbConnection myConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;data source=G:/inetpub/nodb.mdb");
OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM poll", myConnection);
DataSet ds = new DataSet();
myCommand.Fill(ds);
poll.DataSource = ds.Tables[0];
poll.DataTextField = ds.Tables[0].Columns["option"].ColumnName.ToString();
poll.DataValueField = ds.Tables[0].Columns["id"].ColumnName.ToString();
poll.DataBind();
myConnection.Close();
}
protected void poll_SelectedIndexChanged(object sender, EventArgs e)
{
if (poll.SelectedValue != "")
{
Label1.Text = poll.SelectedValue;
}
else
{
Label1.Text = "Inget värde valt";
}
}
<asp:RadioButtonList ID="poll" CssClass="small" runat="server" CellSpacing="0" CellPadding="0" AutoPostBack="true" OnSelectedIndexChanged="poll_SelectedIndexChanged"></asp:RadioButtonList>
Sv: Värde ur radiobuttonlist
Du skulle kunna kolla på http://msdn.microsoft.com/asp.net/articles/webcontrols/default.aspx?pull=/library/en-us/dncodefun/html/code4fun08032004.asp och ta inspiration.
/mSv: Värde ur radiobuttonlist
<code>
protected void poll_SelectedIndexChanged(object sender, EventArgs e)
{
if (poll.SelectedValue != "")
{
Label1.Text = poll.SelectedItem.Value;
}
else
{
Label1.Text = "Inget värde valt";
}
}
</code>Sv:Värde ur radiobuttonlist
Det blir samma sak med din kod, inget värde valt.Sv: Värde ur radiobuttonlist
poll.SelectedIndex = 0;
eller vilken post du nu vill ha markerad från början.Sv:Värde ur radiobuttonlist
Det jag menade med andra raden (om du kanske missförstod) var att poll.SelectedItem.Value; inte fungerade utan jag fortfarande får inget värde valt även om jag klickar i radiobuttonlisten.Sv: Värde ur radiobuttonlist
Det är för att du gör en laddning av radiobuttonlist i postback. Prova denna varianten:
<code>
protected void Page_load(Object sender, EventArgs e)
{
if (!IsPostBack) {
OleDbConnection myConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;data source=G:/inetpub/nodb.mdb");
OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM poll", myConnection);
DataSet ds = new DataSet();
myCommand.Fill(ds);
poll.DataSource = ds.Tables[0];
poll.DataTextField = ds.Tables[0].Columns["option"].ColumnName.ToString();
poll.DataValueField = ds.Tables[0].Columns["id"].ColumnName.ToString();
poll.DataBind();
myConnection.Close();
}
}
protected void poll_SelectedIndexChanged(object sender, EventArgs e)
{
if (poll.SelectedValue != "")
{
Label1.Text = poll.SelectedValue;
}
else
{
Label1.Text = "Inget värde valt";
}
}
<asp:RadioButtonList ID="poll" CssClass="small" runat="server" CellSpacing="0" CellPadding="0" AutoPostBack="true" OnSelectedIndexChanged="poll_SelectedIndexChanged"></asp:RadioButtonList>
</code>Sv:Värde ur radiobuttonlist
Där ser man, jag trodde inte den körde igenom Page_load igen när man anropade en annan subrutin. Man lär sig något nytt varje dag (eller natt).