如何创建动态下拉列表在C#中的事件处理程序 [英] how to create event handler for dynamic drop down list in c#

查看:79
本文介绍了如何创建动态下拉列表在C#中的事件处理程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经使用了Itemplate创建。现在我还创建了一个动态中的下拉列表格动态网格视图。如何创建一个事件处理程序上selectedindexchange。

我创建了一个slectedindexchange事件,但它没有工作。对照从未传递给事件?

做什么创建一个事件处理程序

 公共类DynamicGridViewTextTemplate:了Itemplate
{
    串_ColName;
    DataControlRowType _rowType;
    INT _count;
    详细点评详情=新的细节();    公共DynamicGridViewTextTemplate(字符串COLNAME,DataControlRowType ROWTYPE)
    {
        _ColName = COLNAME;
        _rowType = ROWTYPE;
    }    公共DynamicGridViewTextTemplate(DataControlRowType ROWTYPE,诠释ArticleCount)
    {
        _rowType = ROWTYPE;
        _count = ArticleCount;
    }    公共无效InstantiateIn(System.Web.UI.Control容器)
    {
        开关(_rowType)
        {
            案例DataControlRowType.Header:
                文字LC =新的文字();
                lc.Text =< B>中+ _ColName +&下; / B>中;                DropDownList的DDL =新的DropDownList();                ddl.AutoPostBack = TRUE;
                ddl.SelectedIndexChanged + =新的EventHandler(this.ddl_SelIndexChanged);                container.Controls.Add(LC);
                container.Controls.Add(DDL);                打破;            案例DataControlRowType.DataRow:                 //标签LBL =新的Label();                 //lbl.DataBinding + =新的EventHandler(this.lbl_DataBind);
                 LinkBut​​ton的磅=新的LinkBut​​ton();
                 lb.DataBinding + =新的EventHandler(this.lbl_DataBind);
                 lb.OnClientClick + =新的EventHandler(this.lb_Click);                 //lbl.Controls.Add(lb);
                 container.Controls.Add(磅);                打破;            案例DataControlRowType.Footer:
                文字FLC =新的文字();
                flc.Text =< B>文章总号:+ _COUNT +< / B>中;
                container.Controls.Add(FLC);
                打破;            默认:                打破;
        }
    }    私人无效lb_Click(对象发件人,EventArgs的发送)
    {
        details1.lbl_Click(发件人,E);
    }    私人无效lbl_DataBind(对象发件人,EventArgs的发送)
    {
        //标签LBL =(标签)寄件人;
        LinkBut​​ton的LBL =(LinkBut​​ton的)寄件人;        GridViewRow行=(GridViewRow)lbl.NamingContainer;        lbl.Text =的DataBinder.Eval(row.DataItem,_ColName)的ToString();
    }    公共无效ddl_SelIndexChanged(对象发件人,EventArgs的发送)
    {
        Details1.ddlFilter_SelectedIndexChanged(发件人,E);
    }
}


解决方案

你可以宣布你喜欢这个SelectedIndexChanged事件:

  ddlFilter.SelectedIndexChanged + =新的EventHandler(ddl2_SelectedIndexChanged);
ddlFilter.AutoPostBack = TRUE;无效ddlFilter_SelectedIndexChanged(对象发件人,EventArgs的发送)
{
    //你的code
}

您的活动是不叫的原因是将AutoPostBack =真正的现场。如果你不将它设置为true,您的SelectedIndexChanged事件将永远不会被调用。

I have created a dynamic grid view using Itemplate .now i have also created a dynamic drop down list in the grid . how to create a event handler for on selectedindexchange .

i created a slectedindexchange event but it didnt work .the control never passes to the event ?

what to do create a 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);
    }
}

解决方案

you can declare you selectedindexchanged event like this:

ddlFilter.SelectedIndexChanged += new EventHandler(ddl2_SelectedIndexChanged);
ddlFilter.AutoPostBack = true;

void ddlFilter_SelectedIndexChanged(object sender, EventArgs e)
{
    //your code 
}

The reason your event wasn't called is the AutoPostBack=true field. If you don't set it to true your selectedIndexChanged event will never be called.

这篇关于如何创建动态下拉列表在C#中的事件处理程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆