webForumDet fria alternativet

Dropdownlist

3 svar · 384 visningar · startad av Topper

TopperMedlem sedan apr. 200531 inlägg
#1

Tja.

Säg att du har en dropdownlist där du kan välja olika kategorier, och väljer du kategori 1, så ska alla som ha det i kategori 1 i databasen visas i datagriden.

Alltså SQL-frågan ändras beroende på vad du väljder i dropdownlistan.

Hur görs detta? Någon?

m_soderlundMedlem sedan sep. 20026 425 inlägg
#2

Du får helt enkelt skicka med parametrar från dropdownlistan. Pseudokod:

Ett litet javascript på klienten:

<asp:DropDownList id="ddl1" runat="server" onchange="top.location.href = 'default.aspx?adress=' + this.options[this.selectedIndex].value;"></asp:DropDownList>

I codebehind:

select case request.querystring("adress")

case "1"
SQL="en SQL-fråga"

case "2"
SQL = "en annan SQL-fråga"

case else
SQL = "en sista SQL-fråga om ingen ovan vill"

end select

'kod för att köra frågan mot en databas

/r
Naturligtvis kan du ha option-element i dropdownlistan också, även om jag i mitt fall lade till val i codebehind.

DinoMedlem sedan sep. 20011 914 inlägg
#3

m_soderlund: Det där är hur man gjorde det i ASP.

Ett mer standard sätt för ASP.NET är:

<asp:dropdownlist id="ddl1" AutoPostBack="True" OnSelectedIndexChanged="ddl1_SelectedIndexChanged" runat="server"/>
//C#
protected void Page_Load(object sender, System.EventArgs e) 
{
   if(!IsPostBack)
      Bind();
}

protected void ddl1_SelectedIndexChanged(object sender, System.EventArgs e) 
{
   Bind();
}

private void Bind()
{
   string sql = string.Format("SELECT * FROM dintabell WHERE kategoriId = {0}", int.Parse(ddl1.SelectedValue));

   //Annan kod som hämtar datan från databasen
   //Och som du sen binder till din datagrid

   datagrid1.DataSource = GetData();
   datagrid1.DataBind();
}
'VB.NET
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        If Not IsPostBack Then
            Bind
        End If
    End Sub
    
    Protected Sub ddl1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
        Bind
    End Sub
    
    Private Sub Bind()
        Dim sql As String = String.Format("SELECT * FROM dintabell WHERE kategoriId = {0}", Integer.Parse(ddl1.SelectedValue))

        'Annan kod som hämtar datan från databasen
        'Och som du sen binder till din datagrid
        datagrid1.DataSoruce = GetData
        datagrid1.DataBind
    End Sub
TopperMedlem sedan apr. 200531 inlägg
#4

Okej, hmm...jag får det inte riktigt att fungera...

Här är koden. (tror jag rörde till det ordentligt...tyvärr)

<%@ Page Language="vb" %>
<%@ import Namespace="System.Data.OleDb" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.OleDb" %>
<%@ import Namespace="System.Web.UI.WebControls" %>
<script runat="server">

    Dim objConn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & Server.MapPath("db.mdb"))
          Dim objCmd As OleDbCommand
          Dim objRdr As OleDbDataReader
          Dim strCmd As String
    
    
          Sub Page_Load()
                  If Not IsPostBack Then
                      BindData()
                  End If
          End Sub
    
    
    Protected Sub ddl1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
             DataBind()
         End Sub
    
         Private Sub BindData()
             Dim sql As String = String.Format("SELECT * FROM tabell WHERE Kategori = {0}", Integer.Parse(ddl1.SelectedValue))
    
             objConn.Open()
                  If (Request.QueryString("id") <> "") Then
                      objCmd = New OleDbCommand("SELECT * FROM tabell WHERE Kategori=" & Request.QueryString("id"), objConn)
                      objRdr = objCmd.ExecuteReader()
                      dgAddressBookDetails.DataSource = objRdr
                      dgAddressBookDetails.DataBind()
                  Else
                      objCmd = New OleDbCommand("SELECT * FROM tabell", objConn)
                      objRdr = objCmd.ExecuteReader()
                      dgAddressBook.DataSource = objRdr
                      dgAddressBook.DataBind()
                  End If
                  objRdr.Close()
                  objConn.Close()
    
           End Sub
    
    
      Sub dgAddressBook_SelectedIndexChanged(sender As Object, e As EventArgs)
    
         End Sub

</script>
<html>
<head>
    <title>jkpg.nu</title> 
    <form runat="server">
    </form>
</head>
<body>
    Välj kategori; 
    <asp:DropDownList id="ddl1" onclick="SelectedIndexChanged" runat="server">
        <asp:ListItem Text="val1" valute="val1" />
        <asp:ListItem Text="val2" valute="val2" />
    </asp:DropDownList>
    <p>
        <asp:DataGrid id="dgAddressBook" runat="server" OnSelectedIndexChanged="dgAddressBook_SelectedIndexChanged" GridLines="None" CellPadding="4" AutoGenerateColumns="false" Width="490px">
            <AlternatingItemStyle font-size="10pt" font-names="Arial" backcolor="#ffffff"></AlternatingItemStyle>
            <ItemStyle font-size="10pt" backcolor="#CCCCCC" font-names="Arial" forecolor="Black"></ItemStyle>
            <HeaderStyle font-size="10pt" font-names="Arial" font-bold="True" forecolor="Black"></HeaderStyle>
            <Columns>
                <asp:BoundColumn DataField="Datum" HeaderText="Datum"></asp:BoundColumn>
                <asp:HyperLinkColumn DataNavigateUrlField="ID" DataNavigateUrlFormatString="hem2.aspx?id={0}" DataTextField="Rubrik" HeaderText="Rubrik"></asp:HyperLinkColumn>
                <asp:BoundColumn DataField="Kategori" HeaderText="Kategori"></asp:BoundColumn>
            </Columns>
        </asp:DataGrid>
    </p>
    <p>
        <asp:Repeater id="dgAddressBookDetails" runat="server">
            <ItemTemplate>
                <h1><%# Container.DataItem("ett") %> 
                </h1>
                <p>
                    <img height="300" alt='<%#DataBinder.Eval(Container.DataItem, "BILD")%>' src='<%# "visabild.aspx?picture_id=" + DataBinder.Eval(Container.DataItem, "ID").ToString()%>' /> 
                    <br />
                    <br />
                    <%# Container.DataItem("ett") %> 
                    <br />
                    <br />
                    <br />
                    <%# Container.DataItem("ett") %> 
                    <br />
                    Mail:<%# Container.DataItem("ett") %> 
                    <br />
                    Telefon: <%# Container.DataItem("ett") %> 
            </ItemTemplate>
        </asp:Repeater>
    </p>
</body>
</html>
132 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)