wie erstellen Sie event-handler für dynamische drop-down-Liste in c#
Habe ich eine dynamische grid-Ansicht mit Itemplate .jetzt habe ich auch erstellt eine dynamische drop-down-Liste in dem Gitter . so erstellen Sie eine Ereignisprozedur für auf selectedindexchange .
erstellte ich eine slectedindexchange Veranstaltung aber es hat nicht funktioniert .die Steuerung geht niemals auf das Ereignis ?
was zu tun ist, erstellen Sie einen event-handler
public class DynamicGridViewTextTemplate : ITemplate
{
string _ColName;
DataControlRowType _rowType;
int _Count;
details Details1 = new details();
public DynamicGridViewTextTemplate(string ColName, DataControlRowType RowType)
{
_ColName = ColName;
_rowType = RowType;
}
public DynamicGridViewTextTemplate(DataControlRowType RowType, int ArticleCount)
{
_rowType = RowType;
_Count = ArticleCount;
}
public void InstantiateIn(System.Web.UI.Control container)
{
switch (_rowType)
{
case DataControlRowType.Header:
Literal lc = new Literal();
lc.Text = "<b>" + _ColName + "</b>";
DropDownList ddl = new DropDownList();
ddl.AutoPostBack = true;
ddl.SelectedIndexChanged += new EventHandler(this.ddl_SelIndexChanged);
container.Controls.Add(lc);
container.Controls.Add(ddl);
break;
case DataControlRowType.DataRow:
//Label lbl = new Label();
//lbl.DataBinding += new EventHandler(this.lbl_DataBind);
LinkButton lb = new LinkButton();
lb.DataBinding += new EventHandler(this.lbl_DataBind);
lb.OnClientClick +=new EventHandler(this.lb_Click);
//lbl.Controls.Add(lb);
container.Controls.Add(lb);
break;
case DataControlRowType.Footer:
Literal flc = new Literal();
flc.Text = "<b>Total No of Articles:" + _Count + "</b>";
container.Controls.Add(flc);
break;
default:
break;
}
}
private void lb_Click(Object sender, EventArgs e)
{
details1.lbl_Click(sender, e);
}
private void lbl_DataBind(Object sender, EventArgs e)
{
//Label lbl = (Label)sender;
LinkButton lbl = (LinkButton)sender;
GridViewRow row = (GridViewRow)lbl.NamingContainer;
lbl.Text =DataBinder.Eval(row.DataItem, _ColName).ToString();
}
public void ddl_SelIndexChanged(Object sender, EventArgs e)
{
Details1.ddlFilter_SelectedIndexChanged(sender,e);
}
}
kannst du den ganzen code für diese Methode so gut wie diese.ddl_SelIndexChanged?
Wenn Sie mit ASP.NET Sie sollten daran denken, zum Neuaufbau der Control-Struktur auf jeder Seite laden, wie es war, wenn das Ereignis ausgelöst wurde, da sonst das Ereignis nicht ausgelöst wird.
can u plz sagen, wie zu tun, dass
Hast du jemals das gelöst? Ich habe das gleiche Problem und haben versucht, die Lösungen vorschlägt, und bin immer noch nicht der Erfassung der selectedIndexChangedEvent.
Wenn Sie mit ASP.NET Sie sollten daran denken, zum Neuaufbau der Control-Struktur auf jeder Seite laden, wie es war, wenn das Ereignis ausgelöst wurde, da sonst das Ereignis nicht ausgelöst wird.
can u plz sagen, wie zu tun, dass
Hast du jemals das gelöst? Ich habe das gleiche Problem und haben versucht, die Lösungen vorschlägt, und bin immer noch nicht der Erfassung der selectedIndexChangedEvent.
InformationsquelleAutor Arunachalam | 2010-09-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
können Sie erklären, Sie selectedindexchanged-Ereignis wie dieses:
Den Grund Ihrer Veranstaltung nicht genannt ist die AutoPostBack=true Feld. Wenn Sie nicht setzen Sie ihn auf true Ihre selectedIndexChanged-Ereignis wird nie aufgerufen werden.
Haben Sie überprüft, wenn der code aufgerufen wird? Oder vielleicht ist es verloren, bei einem postback haben Sie das auch?
Sie haben zum hinzufügen von Ereignis-auf jedem postback
wo soll der Anruf gemacht werden.die Kontrolle kommt nicht auf den Anruf, wenn selectindex Veranstaltung
Die Registrierung der Veranstaltung sollte in der Seite.laden oder ähnliche Veranstaltungen. Sie müssen registrieren, um Sie bei jedem postback. Sie können dann den Fall rufen Sie anschließend zum Beispiel in einem button_click-Ereignis.
InformationsquelleAutor MUG4N
Immer wenn ich ein neues Steuerelement in einer ASP-Seite Folge ich dieser Kessel-Platte (beachten Sie, dass ich noch ein paar Beispiel-Steuerelemente, so dass es keine "saubere" boiler plate):
Nun, wenn Sie erstellen Ihre dynamische Dropdown-Menü Initialisieren, und fügen Sie es zu Ihrem Controls-Auflistung jedes mal, sondern nur seine
Visibility
zutrue
wenn Sie es wollen, um zu zeigen, Ihr event ausgelöst werden soll, da die id ' s der Steuerelemente sollten die gleichen sein, zwischen postbacks.InformationsquelleAutor Patrick
Dynamische Steuerelement-Ereignis auftreten, ist es erforderlich, dass es erstellt werden soll und event zugewiesen, in der page_load-Ereignis oder während des page_load-Ereignisses erfolgt. Steuerelement-Ereignis wird ausgelöst, nachdem Page_Load-Ereignis abgeschlossen. Wenn die Steuerung nicht neu in page_load-Ereignis, Ereignis wird nicht an das Steuerelement gebunden werden und wird nicht ausgelöst.
InformationsquelleAutor Nps
Ich hatte das gleiche problem und ich Schaffe das dynamische ddl-innen (!Seite.IsPostBack). Als ich zog die Schöpfung außerhalb der (!Seite.IsPostBack) es geklappt hat.
Müssen Sie erstellen Ihre Elemente außerhalb (!Seite.IsPostBack) wie MUG4N gesagt und es sollte funktionieren.
InformationsquelleAutor Kumar