Announcement

Collapse
No announcement yet.

DataBind - Methode in UserControl

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • DataBind - Methode in UserControl

    Hallo,

    ich habe ein UserControl in dem ich Datenelemente selbst mit mit Daten befülle. Entsprechend dem Life Cycle Modell würde ich davon ausgehen, dass ich z.B. für eine DropDownList, lediglich die OnDataBinding-Eigenschaft festlege und die dann dort hinterlegte Methode automatisch aufgerufen wird. Allerdings passiert das leider nicht. Erst wenn ich z.B. im Load-Event des UserControls die DataBind() Methode des Elementes aufrufe funktioniert es. Hat jemand eine Idee, wie ich das direkt anbinden kann, also dafür sorgen kann, das wie üblich das DatBind() automatisch aufgerufen wird?

    Hier noch Beispeispielcode:
    WebUserControl
    Code:
    <%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>
    
    <asp:DropDownList ID="ddlTest" runat="server" OnDataBinding="loadData" />
    Code behind für das WebUserControl
    Code:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data;
    
    public partial class WebUserControl : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
          ddlTest.DataBind(); // das sollte eigentlich nicht sein
        }
    
        protected void loadData(object Sender, EventArgs Args)
        {
          DataTable DT = new DataTable();
          DT.Columns.Add("ID", typeof(int));
          DT.Columns.Add("Val", typeof(string));
    
          DT.Rows.Add(new object[] { 1, "a" });
          DT.Rows.Add(new object[] { 2, "b" });
          DT.Rows.Add(new object[] { 3, "c" });
    
          ddlTest.DataSource = DT;
          ddlTest.DataValueField = "ID";
          ddlTest.DataTextField = "Val";
        }
    }
    Hauptseite
    Code:
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Default2" %>
    <%@ Register TagPrefix="my" TagName="uc1" Src="~/WebUserControl.ascx" %>
    
    <!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></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
          <my:uc1 ID="myUC" runat="server" />
        </div>
        </form>
    </body>
    </html>
Working...
X