Laden...

Probleme mit dem UpdatePanel und selbsterstelltem Control

Erstellt von live2 vor 15 Jahren Letzter Beitrag vor 15 Jahren 912 Views
L
live2 Themenstarter:in
34 Beiträge seit 2005
vor 15 Jahren
Probleme mit dem UpdatePanel und selbsterstelltem Control

Habe mir ein kleines Control gebaut das eine Bullet List erstellt wenn ich das ganze nun in ein Update Panel stecke funktioniert es nicht mit einem Button Control aus der Standart Pallete im selben Update Panel funktioniert es einwandfrei.

Mein Control


using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Collections;
using System.Collections.Specialized;
using System.Web.UI.WebControls;
namespace NagerControls
{
    public class BulletMenuEventArgs : EventArgs
    {
        public string Selected;

        public BulletMenuEventArgs(string Selected)
        {
            this.Selected = Selected;
        }
    }

    public class BulletMenu : Control, IPostBackDataHandler, IPostBackEventHandler
    {
        private string _selected = "";
        public List<string> test = new List<string>();
        public event EventHandler<BulletMenuEventArgs> OnClick;

        public bool LoadPostData(string postDataKey, NameValueCollection values)
        {
            return true;
        }

        public void RaisePostDataChangedEvent()
        {
            //nothing 
        }

        public void RaisePostBackEvent(string eventArgument)
        {
            if (OnClick != null)
            {
                OnClick(this, new BulletMenuEventArgs(eventArgument));
            }


            this._selected = eventArgument;
        }

        protected override void Render(HtmlTextWriter output)
        {
            ClientScriptManager clientscriptmanager = this.Page.ClientScript;
            string style = "";

            output.Write("<ul>");
            for (int i = 0; i < test.Count; i++)
            {
                style = "";
                if (test[i] == this._selected)
                {
                    style = " style=\"font-weight:bold;\"";
                }
                output.Write("<li" + style + " onclick=\"" + clientscriptmanager.GetPostBackEventReference(this, test[i]) + "\"" + ">" + test[i] + "</li>");
            }
            output.Write("</ul>");

        }
    }
}

Default.aspx.cs


using System;
using System.Configuration;
using System.Data;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using NagerControls;

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        List<string> test = new List<string>();
        test.Add("location1");
        test.Add("location2");
        test.Add("location3");
        test.Add("location4");
        test.Add("location5");


        BulletMenu bulletmenu = new BulletMenu();
        bulletmenu.test = test;
        bulletmenu.OnClick += new EventHandler<BulletMenuEventArgs>(bulletmenu_OnClick);

        Button button = new Button();
        button.Text = "test";
        button.Click += new EventHandler(button_Click);

        this.Panel1.Controls.Add(bulletmenu);
        this.Panel1.Controls.Add(button);

    }

    void button_Click(object sender, EventArgs e)
    {
        LiteralControl literalcontrol = new LiteralControl();
        literalcontrol.Text = "test";
        this.Panel2.Controls.Add(literalcontrol);
    }

    void bulletmenu_OnClick(object sender, BulletMenuEventArgs e)
    {
        LiteralControl literalcontrol = new LiteralControl();
        literalcontrol.Text = e.Selected;
        this.Panel2.Controls.Add(literalcontrol);
    }

}

Default.aspx


<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
    <link href="StyleSheet.css" rel="stylesheet" type="text/css" />
</head>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <div style="float:left; border:1px solid #DDDDDD; width:200px;">
                <asp:Panel ID="Panel1" runat="server"></asp:Panel>
                </div>
                <div style="float:left; border:1px solid #DDDDDD; width:200px;">
                <asp:Panel ID="Panel2" runat="server"></asp:Panel>
                </div>
                <div style="clear:left;"></div>
            </ContentTemplate>
        </asp:UpdatePanel>

        
    </form>
    
</body>
</html>

X
1.177 Beiträge seit 2006
vor 15 Jahren

huhu live2,

deinen ersten Satz:

wenn ich das ganze nun in ein Update Panel stecke funktioniert es nicht mit einem Button Control aus der Standart Pallete im selben Update Panel funktioniert es einwandfrei.

verstehe ich leider nicht. Button im selben Update Panel? oder in einem andern? Standard?

Der Rest sieht überflogen erstmal in Ordnung aus.

🙂

Xynratron

Herr, schmeiss Hirn vom Himmel - Autsch!

Die Erfahrung zeigt immer wieder, dass viele Probleme sich in Luft auslösen, wenn man sich den nötigen Abstand bzw. Schlaf gönnt.

L
live2 Themenstarter:in
34 Beiträge seit 2005
vor 15 Jahren

Den Button habe ich ins selbe Update Panel gelegt. Das Problem ist das die AJAX unterstützung für mein Control nicht funktioniert. Brauch ich vielleicht noch ein zusätzliches Interface?

lg