如何创建动态下拉列表在C#中的事件处理程序 [英] how to create event handler for dynamic drop down list in 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);
LinkButton的磅=新的LinkButton();
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 =(标签)寄件人;
LinkButton的LBL =(LinkButton的)寄件人; 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屋!