| Forum: ASP.NET |
Thema:
Re: Zugriff auf Custom Control |
Von:
G. Guest (
24.10.2003 13:44) |
Hallo beisammen,
nun habe ich ein neues Problem: Ich möchte mein CustomControl in ein DataGrid einbinden. Im ItemTemplate funktioniert das auch und ich bekomme mein DropDown mit Einträgen angezeigt. Wenn ich aber die Zeile editieren will, ist meine DropDownList leer.
--------------------------------------------------------------------------------
test.aspx
<%@ Page language="c#" Codebehind="test.aspx.cs" Inherits="Lizenzdialog.Test" %>
<%@ Register TagPrefix="tom" TagName="lizenzart_liste" Src="modules/lizenzart_liste.ascx" %>
<HTML>
<body>
<form id="udo" method="post" runat="server">
<asp:label id="Message" runat="server"></asp:label><br>
<ASP:DATAGRID id="LizenzListeDG" runat="server" OnEditCommand="LizenzListeDG_OnEditCommand" DataKeyField="SID"
OnDeleteCommand="LizenzListeDG_OnDeleteCommand" AutoGenerateColumns="False" OnUpdateCommand="LizenzListeDG_OnUpdateCommand"
OnCancelCommand="LizenzListeDG_OnCancelCommand">
<ItemStyle BackColor="#F2F4F8"></ItemStyle>
<HeaderStyle BackColor="#D1DAE8"></HeaderStyle>
<Columns>
<asp:TemplateColumn HeaderText="Aktion">
<HeaderStyle HorizontalAlign="Center" Width="6%"></HeaderStyle>
<ItemTemplate>
<asp:LinkButton runat="server" Text='<img src="images/edit.gif">' CommandName="Edit"></asp:LinkButton>
</ItemTemplate>
<EditItemTemplate>
<asp:LinkButton runat="server" Text='<img src="images/update.gif">'
CommandName="Update"></asp:LinkButton>
<asp:LinkButton runat="server" Text='<img src="images/zuruecksetzen.gif">' CommandName="Cancel"></asp:LinkButton>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn ReadOnly="True" DataField="VERNR" HeaderText="VERNR">
<HeaderStyle Width="7%"></HeaderStyle>
</asp:BoundColumn>
<asp:TemplateColumn HeaderText="LIZENZART">
<HeaderStyle Width="16%"></HeaderStyle>
<ItemTemplate>
<tom:lizenzart_liste runat="server" id="ctl_lizenzart_liste" /></ItemTemplate>
<EditItemTemplate>
<tom:lizenzart_liste runat="server" id="ctl_lizenzart_liste" />
</EditItemTemplate>
</asp:TemplateColumn>
</Columns>
</ASP:DATAGRID>
</P>
</form>
</body>
</HTML>
--------------------------------------------------------------------------------
test.aspx.cs
using System;
using System.Data;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Drawing;
namespace Lizenzdialog
{
public class Test : System.Web.UI.Page
{
private DataView _BetriebssystemList;
protected System.Web.UI.WebControls.DataGrid LizenzListeDG;
protected Lizenzdialog.modules.rechner_liste ctl_lizenzart_liste;
private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
BindData();
}
}
private void BindData()
{
LizenzData _LizenzData = new LizenzData();
DataView LizenzListeDataView = _LizenzData.GetData(Request.QueryString["id1"], Request.QueryString["id2"]);
LizenzListeDG.DataSource = LizenzListeDataView;
LizenzListeDG.DataBind();
}
public void LizenzListeDG_OnEditCommand(Object sender, DataGridCommandEventArgs e)
{
((DataGrid)sender).EditItemIndex = e.Item.ItemIndex;
}
public void LizenzListeDG_OnUpdateCommand(Object sender, DataGridCommandEventArgs e)
{
//Editieren beenden durch Reset des EditItemIndex
((DataGrid)sender).EditItemIndex = -1;
//Daten an das Grid binden
BindData();
}
public void LizenzListeDG_OnCancelCommand(Object sender, DataGridCommandEventArgs e)
{
//Editieren beenden durch Reset des EditItemIndex
((DataGrid)sender).EditItemIndex = -1;
BindData();
}
public void LizenzListeDG_OnDeleteCommand(Object sender, DataGridCommandEventArgs e)
{
//Editieren beenden durch Reset des EditItemIndex
((DataGrid)sender).EditItemIndex = -1;
//Daten an das Grid binden
BindData();
}
}
}
--------------------------------------------------------------------------------
lizenz_liste.ascx
<%@ Control Language="c#" Codebehind="lizenzart_liste.ascx.cs" Inherits="Lizenzdialog.modules.lizenzart_liste"%>
<asp:DropDownList id="ddl_lizenzart" Runat="server"></asp:DropDownList>
--------------------------------------------------------------------------------
lizenz_liste.ascx.cs
using System;
using System.Data;
using System.Drawing;
using System.Collections;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace Lizenzdialog.modules
{
public class lizenzart_liste : System.Web.UI.UserControl
{
public DataView _LizenzartList;
public System.Web.UI.WebControls.DropDownList ddl_lizenzart;
private void Page_Init(object sender, System.EventArgs e)
{
LizenzData _LizenzData = new LizenzData();
}
private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
BindData();
}
}
private void BindData()
{
ArrayList values = new ArrayList();
values.Add ("HL");
values.Add ("NL");
values.Add ("FL");
values.Add ("SL");
ddl_lizenzart.DataSource = values;
ddl_lizenzart.DataBind();
}
public DataView GetlizenzartList()
{
return _LizenzartList;
}
}
}
Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!