我想在DataList中嵌套DropDownList大家都会了,就在DataList1_ItemDataBound中进行绑定就行了。下面是代码
- if (e.Item.ItemType == ListItemType.Item)
- {
- DropDownList ddl = (DropDownList)e.Item.FindControl("ddl1");
- OleDbConnection cn = new OleDbConnection(ConnectionString);
- cn.Open();
- cn1 = new OleDbConnection(ConnectionString);
- cn1.Open();
- OleDbCommand cmd = new OleDbCommand("select * from Detail", cn);
- OleDbDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
- ddl.DataSource = dr;
- ddl.DataTextField = "DName";
- ddl.DataValueField = "id";
- ddl.DataBind();
- }
如果我们想触发DropDownList的SelectedIndexChanged怎么办呢。其实很简单,在前台页面,把datalist进入编辑状态。也就是编辑模板。就会看见DropDownList了。这时双击它就出现SelectedIndexChanged事件,可是属性菜单中无法找到AutoPostBack,没关系,我们在前台,给它加上就行了。AutoPostBack = "true"
在SelectedIndexChanged事件中,你可以做你想做的事了。
可是有一点,如果我想查看一下,我选择是什么怎么呢,这里不是有一个sender吗,我们对它处理就行了
- protected void ddl1_SelectedIndexChanged(object sender, EventArgs e)
- {
- Response.Write(((DropDownList)sender).SelectedValue.ToString());
- //如果你想得到我是哪行进行改变。哪么就得进行这样取,这里说明一点。这个方法,是群里一个兄弟提出的,同时也给出了代码。
- DropDownListrbl = (DropDownList)sender;
TableCell cell = (TableCell)(rbl.Parent);
GridViewRow gr = (GridViewRow)(cell.Parent);
int id = Convert.ToInt32(this.DataList1.DataKeys[gr.RowIndex].Value.ToString()); - }
现在试一下,是不是很爽