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
就行了。