Gridview OnSelectedIndexChanged="ddlrefresh_SelectedIndexChanged"> 的事件永远不触发?


protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { bind(); } } public void bind() { string sqlStr = "select * from Employee"; DataSet myds = Common.dataSet(sqlStr); GridView1.DataSource = myds; GridView1.DataKeyNames = new string[] { "ID" }; GridView1.DataBind(); AccessDataSource s = new AccessDataSource("E://WebSite//GridViewExamples//GridViewExamples//App_Data//Example.mdb", "select * from Employee"); this.GridView1.DataSourceID = s.ID; this.GridView1.DataBind(); } protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { DropDownList ddlrefresh = (DropDownList)e.Row.FindControl("ddlRefresh"); //ddlrefresh.NamingContainer ddlrefresh.AutoPostBack = true; ddlrefresh.SelectedIndexChanged += new EventHandler(ddlrefresh_SelectedIndexChanged); } } protected void ddlrefresh_SelectedIndexChanged(object sender, EventArgs e) { ClientScript.RegisterStartupScript(this.GetType(), "script13", "<mce:script type="text/javascript"><!-- alert('ddlrefresh_SelectedIndexChanged') // --></mce:script>"); }


-------------------------------------------------------------------------------------------------------------------------------------

上面这样写dropdownlist 的事件永远不触发?


但是当代码换成

-------------------------------------------------------------------------------------------------------------------------------------<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->
<asp:TemplateField> <ItemTemplate> [color=#FF0000] <asp:DropDownList ID="ddlRefresh" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlrefresh_SelectedIndexChanged">[/color] <asp:ListItem Value="1">1</asp:ListItem> <asp:ListItem Value="2">2</asp:ListItem> <asp:ListItem Value="3">3</asp:ListItem> </asp:DropDownList> </ItemTemplate> </asp:TemplateField>

-------------------------------------------------------------------------------------------------------------------------------------

就会执行。
为什么第一种方法不执行呢?

-------------------------------------------------------------------------------------------------------------------------------------

解决方法:

protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { DropDownList ddlrefresh = (DropDownList)e.Row.FindControl("ddlRefresh"); //ddlrefresh.NamingContainer ddlrefresh.AutoPostBack = true; ddlrefresh.SelectedIndexChanged += new EventHandler(ddlrefresh_SelectedIndexChanged); } }

将事件代码加入到
RowCeated

就行了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值