Jag har gjort en UCT som innehåller en dropdownlista. I denna finns några alternativ och när jag väljer en av alternativen så submittar den till en annan sida. Denna UCT finns med på många av aspx-sidorna. Hejsan Pelle. du får fram vilket index som är valt med egenskapen selectedIndexFörselekterat objekt via dropdownlista
När jag väljer ett alternativ så förflyttar man sig mycket riktigt till denna sida och informationen visas upp. Nu kommer problemet: Jag kan inte komma på hur jag gör så att det alternativ jag valt i listboxen är förselekterat - det blir alltid samma objekt som är default, nämligen det första. Hur skall jag lösa detta problem?
<code>
<form runat="Server" id="category" name="category">
<td class="nav">
<asp:dropdownlist
AutoPostBack="True"
id="categoryid"
cssClass="listbox"
runat="server"
DataTextField="categoryname"
DataValueField="categoryid"
EnableViewState="true"/>
</td>
</form>
</code>
<code>
Public MustInherit Class navigation
Inherits System.Web.UI.UserControl
Protected WithEvents category As System.Web.UI.HtmlControls.HtmlForm
Protected WithEvents categoryid As System.Web.UI.WebControls.DropDownList
#Region " Web Form Designer Generated Code "
'This call is required by the Web Form Designer.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
End Sub
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Put user code to initialize the page here
If IsPostBack Then
End If
' Hämta alla kategorier från databasen
Dim products As IBuySpy.ProductsDB = New IBuySpy.ProductsDB()
' fyll listboxen med produkter
categoryid.DataSource = products.GetProductCategories()
categoryid.DataBind()
End Sub
Private Sub categoryid_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles categoryid.SelectedIndexChanged
' Användaren har valt en annan grupp i listan - då visar vi den
Response.Redirect("ProductsList.aspx")
End Sub
End Class
</code>
Innan jag gav upp så insåg jag att selecteditem.value returnerar det värde som står i id-fältet på select-taggen, inte vilken position den har i indexet. Tyvärr får jag ändå inte ihop koden då jag inte hittar rätt i strukturen. Skriver jag i codebehind exempelvis categoryid.SelectedIndex = 2 så är objekt 2 valt helatiden. Då kommer funderingen, hur får jag ut dess index och kan återanvända det när sidan laddats om och redirectats.
Ytterligare, dropdownlistans form krävde tydligen en runat=server för att fungera och det i sin tur gjorde att jag inte kunde sätta en action på formen, annars hade jag kunnat submitta mot den önskade sidan istället för redirect.
Det känns på något sätt som jag är inne i en total tankevurpa och att det måste vara jättelätt att få detta rätt - men jag förstår bara inte hur. All hjälp mottages tacksamt.Sv: Förselekterat objekt via dropdownlista
Ifall du får med ett ID när du submittar, t,ex. selecteditem.value så kan man välja ett alternativ enligt följande:
<code>
dim id as integer = request.querystring("id")
cmbCombo.Items.FindByValue(id.toString()).Selected = True
</code>
Detta är vad jag kommer på sähär på rak arm.
mvh,
PhilipSv: Förselekterat objekt via dropdownlista
<%
Dim catId As Integer
catId = Parse.Int32(categoryid.SelectedIndex)
%>
cya,
PatrikB