C# 事件处理程序函数只调用一次,而不是第二次调用
我有一个网页,在运行时使用GridView中的模板字段创建了一个带有多个下拉列表的网页。 我已在selectedindexchange事件中将事件处理程序分配给DDL。 但是这个事件处理函数只被调用一次,而我的gridview只被更新一次 如何在每次选择索引更改后调用我的事件处理程序函数 这是我的密码C# 事件处理程序函数只调用一次,而不是第二次调用,c#,asp.net,gridview,drop-down-menu,C#,Asp.net,Gridview,Drop Down Menu,我有一个网页,在运行时使用GridView中的模板字段创建了一个带有多个下拉列表的网页。 我已在selectedindexchange事件中将事件处理程序分配给DDL。 但是这个事件处理函数只被调用一次,而我的gridview只被更新一次 如何在每次选择索引更改后调用我的事件处理程序函数 这是我的密码 foreach (DataColumn coloumn in dt.Columns) { if (!coloumn.ColumnName.Equals("
foreach (DataColumn coloumn in dt.Columns)
{
if (!coloumn.ColumnName.Equals("empName"))
{
var linkF = new TemplateField();
linkF.HeaderText = coloumn.ColumnName;
linkF.HeaderTemplate = new LinkColumn(ListItemType.Header, coloumn.ColumnName,folder);
linkF.ItemTemplate = new LinkColumn(ListItemType.Item, coloumn.ColumnName,folder);
GridView1.Columns.Insert(y, linkF);
y++;
}
else if (coloumn.ColumnName.Equals("empName"))
{
//Response.Write("Came");
BoundField bfield = new BoundField();
////Initalize the DataField value.
bfield.DataField = coloumn.ColumnName;
////Initialize the HeaderText field value.
bfield.HeaderText = coloumn.ColumnName;
GridView1.Columns.Insert(y, bfield);
y++;
}
}
GridView1.DataSource = dt;
GridView1.DataBind();
class LinkColumn : DetailView, ITemplate
{
int id;
ListItemType _item;
String colN = null;
String fold;
public LinkColumn(ListItemType item, String colNa,String f)
{
_item = item;
colN = colNa;
fold = f;
}
public void InstantiateIn(System.Web.UI.Control container)
{
switch (_item)
{
case ListItemType.Header:
DetailView.dp = new DropDownList();
Label lb = new Label();
MySqlCommand cm = new MySqlCommand("select distinct " + colN + " from " + fold + "",conn);
MySqlDataAdapter ad = new MySqlDataAdapter();
DataTable d = new DataTable();
ad.SelectCommand = cm;
ad.Fill(d);
DetailView.dp.DataTextField = colN;
DetailView.dp.DataValueField = colN;
DetailView.dp.DataSource = d;
DetailView.dp.DataBind();
lb.Text = colN.ToUpperInvariant();
dp.AutoPostBack = true;
container.Controls.Add(lb);
container.Controls.Add(DetailView.dp);
DetailView.dp.SelectedIndexChanged += new EventHandler(dp_Selected);
break;
case ListItemType.Item:
TextBox tb1 = new TextBox();
tb1.Enabled = false;
tb1.DataBinding += new EventHandler(tb1_Data);
tb1.Columns = 30;
container.Controls.Add(tb1);
break;
}
}
void tb1_Data(object sender, EventArgs e)
{
TextBox txt = (TextBox)sender;
GridViewRow cont = (GridViewRow)txt.NamingContainer;
object dataV = DataBinder.Eval(cont.DataItem, colN);
if (dataV != DBNull.Value)
{
txt.Text = dataV.ToString();
}
}
void dp_Selected(object sender, EventArgs e)
{
DropDownList list = (DropDownList)sender;
String name = list.SelectedValue;
Session["cols"] = name;
DetailView.colName = Session["cols"].ToString();
DetailView.flag = true;
}
Mu事件处理程序函数dp_selected只调用一次。我已经在Page_Load()中调用了GridBind()函数
任何帮助都将不胜感激。
提前感谢在不显示代码的情况下,没有人可以帮助您(至少针对此问题)在页面的OnInit事件中设置事件或创建任何dinamyc控件。这应该是你的问题!我想在每个indexselectionchanged上更新我的GridView。但当我在事件处理程序函数中将我的函数调用到BindGrid时,它抛出了空指针异常