Skulle göra två dropdownlister där värdet i i den ena är beroende på vilket värde den andra har. Trodde det skulle räcka med en vanlig postback, men det gör det inte, så jag letade runt lite. Hittade ett exempel som skulle fungera. Problemet var att den hittar inte andra funktioner som datalister behöver och anropar vid Page_Load. Får förlande felmeddelande: Hasse, Tack, ska testa den varianten du gav mig. Den som är felaktig ser ut så här: Gjorde en variant av det du sa, problemet är att dropdownlist2 fylls inte. Jag kom på varför, jag hade tömt värden i databasen (jag vet, jag skäms). Det funkar nu. Tack Andreas :)Dropdownlist
<code>
Name 'getPersonalMail' is not declared
Line 14: DataList1.DataSource = getPersonalMail()
</code>
Koden jag misstänker det är fel i är
<code>
#Region " Web Form Designer Generated Code "
'This call is required by the Web Form Designer.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
Protected WithEvents DropDownList1 As System.Web.UI.WebControls.DropDownList
Protected WithEvents DropDownList2 As System.Web.UI.WebControls.DropDownList
'NOTE: The following placeholder declaration is required by the Web Form Designer.
'Do not delete or move it.
Private designerPlaceholderDeclaration As System.Object
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
</code>Sv: Dropdownlist
vad var problemet med ditt första försök? Om du sätter på <b>AutoPostBack</b> på din första dropdown och i <b>SelectedIndexChanged</b> händelsen kontrollerar vad som är valt så kan du fylla lista två ut i från detta. Några korta saker du bör tänka på
* Ange DataTextField på din dropdown - Detta är namnet på den "kolumn" i den datakälla som du binder till din dropdown list som kommer användas för att hämta textvärdena som visas.
* Ange DataValueField på din dropdown - Detta är namnet på den "kolumn" i den datakälla som du binder till din dropdown list som kommer att användas för att hämta det värde som varje post tilldelas.
* I din <b>SelectedItemChanged</b> händelse kan du kolla <b>SelectedItem.Text</b> och <b>SelectedItem.Value</b> för att läsa av respektive värde. Detta värde använder du troligen för att avgöra vad som skall visas i din andra dropdown
* Du använder samma princip för att binda informationen i din andra dropdown list
Problemet du stötte på i ditt andra försök är att du har inte deklarerat metoden <b>getPersonalMail</b> som troligen finns med i den källkod som du hittade på sidan. Det är omöjligt att säga hur den skall se ut men troligen är det något i form med
Public Function getPersonalMail() As DataSet
' Massor av kod här
End Function
Sv: Dropdownlist
<code>
Function getPersonalMail() As System.Data.DataSet
Dim till As String = Session("Anv")
Dim but2 As String = Session("Butik")
Dim connectionString As String = "server='(local)'; trusted_connection=true; database='test'"
Dim dbConnection As System.Data.IDbConnection = New System.Data.SqlClient.SqlConnection(connectionString)
Dim queryString As String = "SELECT [mail].* FROM [mail] WHERE (([mail].[Till] = @Till) AND ([mail].[But2] = @But2))"
Dim dbCommand As System.Data.IDbCommand = New System.Data.SqlClient.SqlCommand
dbCommand.CommandText = queryString
dbCommand.Connection = dbConnection
Dim dbParam_till As System.Data.IDataParameter = New System.Data.SqlClient.SqlParameter
dbParam_till.ParameterName = "@Till"
dbParam_till.Value = till
dbParam_till.DbType = System.Data.DbType.String
dbCommand.Parameters.Add(dbParam_till)
Dim dbParam_but2 As System.Data.IDataParameter = New System.Data.SqlClient.SqlParameter
dbParam_but2.ParameterName = "@But2"
dbParam_but2.Value = but2
dbParam_but2.DbType = System.Data.DbType.String
dbCommand.Parameters.Add(dbParam_but2)
Dim dataAdapter As System.Data.IDbDataAdapter = New System.Data.SqlClient.SqlDataAdapter
dataAdapter.SelectCommand = dbCommand
Dim dataSet As System.Data.DataSet = New System.Data.DataSet
dataAdapter.Fill(dataSet)
Return dataSet
End Function
</code>
Men jag försöker nu ditt alternativ först :)Sv: Dropdownlist
Script:
<code>
Sub Page_Load()
If Not IsPostBack Then
DropDownList1.DataSource = getButik()
DropDownList1.DataTextField = "Butik"
DropDownList1.DataValueField = "Butik"
DropDownList1.DataBind()
DataList1.DataSource = getPersonalMail()
DataList1.DataBind()
DataList2.DataSource = getButikMail()
DataList2.DataBind()
DataList3.DataSource = getSendMail()
DataList3.DataBind()
End If
End Sub
Sub getNamnMail(sender As Object, e As System.EventArgs)
DropDownList2.DataSource = getNamn()
DropDownList2.DataTextField = "Namn"
DropDownList2.DataValueField = "Namn"
DropDownList2.DataBind()
End Sub
Function getNamn() As System.Data.DataSet
Dim butik As String = DropDownList1.SelectedItem.Value
Dim connectionString As String = "server='(local)'; trusted_connection=true; database='test'"
Dim dbConnection As System.Data.IDbConnection = New System.Data.SqlClient.SqlConnection(connectionString)
Dim queryString As String = "SELECT [login].* FROM [login] WHERE ([login].[Butik] = @Butik)"
Dim dbCommand As System.Data.IDbCommand = New System.Data.SqlClient.SqlCommand
dbCommand.CommandText = queryString
dbCommand.Connection = dbConnection
Dim dbParam_butik As System.Data.IDataParameter = New System.Data.SqlClient.SqlParameter
dbParam_butik.ParameterName = "@Butik"
dbParam_butik.Value = butik
dbParam_butik.DbType = System.Data.DbType.String
dbCommand.Parameters.Add(dbParam_butik)
Dim dataAdapter As System.Data.IDbDataAdapter = New System.Data.SqlClient.SqlDataAdapter
dataAdapter.SelectCommand = dbCommand
Dim dataSet As System.Data.DataSet = New System.Data.DataSet
dataAdapter.Fill(dataSet)
Return dataSet
End Function
</code>
HTML:
<code>
<asp:DropDownList id="DropDownList1" runat="server" Font-Size="X-Small" AutoPostBack="True" OnSelectedIndexChanged="getNamnMail"></asp:DropDownList>
<asp:DropDownList id="DropDownList2" runat="server" Font-Size="X-Small"></asp:DropDownList>
</code>
Jag får inget felmeddelande, den fylls bara inte.Sv: Dropdownlist