Categories: ASP.NET, Basics, Code, Snippets Posted by AlexanderZeitler on 9/20/2004 6:31 PM | Comments (0)

Bedingt durch ein Posting in der ASP.NET-Mailingliste habe ich ein wenig mit der ASP.NET DataList gespielt - Resultat ist die Möglichkeit, Inhalt in DataListItems per Mausklick ein- und auszublenden.

Zur Verdeutlichung rechts einige Screenshots. Dargestellt sind die Kunden aus der bekannten Northwind-Datenbank.

Der Code der .aspx-Datei:

<%@ Page language="c#" Codebehind="default.aspx.cs" AutoEventWireup="false" Inherits="BlogSamples.DataListItemInvisible._default" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<html>
<head>
<title>default1</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name=vs_defaultClientScript content="JavaScript">
<meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
</head>
<body MS_POSITIONING="GridLayout">
    
<form id="Form1" method="post" runat="server">
    <asp:datalist id="DataList1" runat="server">
        <headertemplate><h1>Kunden</h1>    </headertemplate>
        <itemstyle backcolor="#ffffff" />
        <itemtemplate>
            <asp:linkbutton runat="server" id="lbtShowHide" commandname="show">
            <%# DataBinder.Eval(Container, "DataItem.CompanyName") %>
            </asp:linkbutton>
            <br/>
            <asp:label id="lblAddress" runat="server" visible="False">
            <%# DataBinder.Eval(Container, "DataItem.Address") %>
            </asp:label>
            <asp:label id="lblCountry" runat="server" visible="False">
            <%# DataBinder.Eval(Container, "DataItem.Country") %>
            </asp:label>
            <hr/>
        </itemtemplate>
    </asp:datalist>
</form>
</body>
</html>

Der Code der .aspx.cs-Datei:

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace BlogSamples.DataListItemInvisible
{
    /// <summary>
    /// Zusammenfassung fr default.
    /// </summary>
    public class _default : System.Web.UI.Page
    {
        protected System.Web.UI.WebControls.DataList DataList1;
    
        private void Page_Load(object sender, System.EventArgs e) {
        if(!Page.IsPostBack)
        {
            // Datenbindung
            DataList1.DataSource = this.ReadDataFromDB();
            DataList1.DataKeyField = "CustomerID";
            DataList1.DataBind();
            }
        }

        // Daten aus der Northwind-DB lesen
        private DataSet ReadDataFromDB() {
            OleDbConnection MyNWConn =
                new OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("../data/Nwind.mdb"));
            DataSet MyDataSet = new DataSet();
            OleDbDataAdapter oCommand = new OleDbDataAdapter();
            OleDbCommand oledbcmd = new OleDbCommand();
            oledbcmd.CommandType = CommandType.StoredProcedure;
            oledbcmd.CommandText = "[SelectCustomers]";
            oledbcmd.Connection = MyNWConn;
            oCommand.SelectCommand = oledbcmd;
            oCommand.Fill(MyDataSet,"Orders");
            MyNWConn.Close();
            return MyDataSet;
        }


        #region Vom Web Form-Designer generierter Code
        override protected void OnInit(EventArgs e) {
            //
            // CODEGEN: Dieser Aufruf ist fr den ASP.NET Web Form-Designer erforderlich.
            //
            InitializeComponent();
            base.OnInit(e);
        }
        
        /// <summary>
        /// Erforderliche Methode fr die Designeruntersttzung.
        /// Der Inhalt der Methode darf nicht mit dem Code-Editor gendert werden.
        /// </summary>
        private void InitializeComponent() {
            this.Load += new System.EventHandler(this.Page_Load);
            this.DataList1.ItemCommand += new DataListCommandEventHandler(DataList1_ItemCommand);
        }
        #endregion

        //Auswertung des geklickten LinkButtons
        private void DataList1_ItemCommand(object source, DataListCommandEventArgs e) {
            if(e.CommandName == "show") {
                ((Label)e.Item.FindControl("lblAddress")).Visible = true;
                ((Label)e.Item.FindControl("lblCountry")).Visible = true;
                ((LinkButton)e.Item.Controls[1]).CommandName = "hide";

            }
            if(e.CommandName == "hide") {
                ((Label)e.Item.FindControl("lblAddress")).Visible = false;
                ((Label)e.Item.FindControl("lblCountry")).Visible = false;
                ((LinkButton)e.Item.FindControl("lbtShowHide")).CommandName = "show";
            }
        }
    }
}

Zunächst die Liste vor dem Klick auf den Namen des Kunden:

Nach dem Klick auf den Namen des Kunden erscheinen die übrigen Daten:

Ein weiterer Klick auf den Namen lässt die erweiterten Informationen wieder verschwinden:

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Comments are closed