TopperMedlem sedan apr. 200531 inlägg 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?
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 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 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>