关于其它控件绑定这一块网上有很多,但发现repeater这一块很少,结合网上知识总结如下:
1,在repeater上抓取控件及进行数据绑定;
一般是在数据绑定后,或着是在ItemDataBound事件中来处理,下面介绍两种方法:
第一种在数据手动绑定后用for循环来查找下拉列表控件(其它控件原理一样),
- private void DateBindView()
- {
- DataSet ds = new DataSet();
- ds = BLL.UserInfoManager.GetList();
- rptContent.DataSource = ds;
- rptContent.DataBind();
- DropDownList dllOperator;
- for (int j = 0; j < this.rptContent.Items.Count; j++)
- {
- dllOperator = (DropDownList)this.rptContent.Items[j].FindControl("dllOperator");
- dllOperator.DataSource = BLL.StateInfoManager.GetList().Tables[0].DefaultView;
- dllOperator.DataTextField = "Remark";
- dllOperator.DataValueField = "stateid";
- dllOperator.DataBind();
- DataRowView rowv = (DataRowView)this.rptContent.Items[j].DataItem;
- //设置初始项
- dllOperator.Items.Add(new ListItem("-Choose-", ""));
- dllOperator.SelectedValue = ds.Tables[0].Rows[j][4].ToString();//获到当前列的状态ID用于绑定下拉列表
- }
- }
第二种有ItemDataBound方法中进行查找下拉列表,并进行当前数据的绑定.这个地方很关键!
- protected void rptContent_ItemDataBound(object sender, RepeaterItemEventArgs e)
- {
- if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
- {
- DropDownList dllOperator = (DropDownList)e.Item.FindControl("dllOperator");
- dllOperator.DataTextField = "Remark";
- dllOperator.DataValueField = "stateid";
- dllOperator.DataSource = BLL.StateInfoManager.GetList().Tables[0].DefaultView;
- //BLL.StateInfoManager.GetList().Tables[0].DefaultView;
- dllOperator.DataBind();
- dllOperator.Items.Add(new ListItem("-Choose-", ""));
- //找到分类Repeater关联的数据项
- DataRowView rowv = (DataRowView)e.Item.DataItem;//获取当前项行数据再去访问那一列.注意坐标索引是从0开始
- dllOperator.SelectedValue =rowv[4].ToString();
- }
- }
而前台只需一句代码就OK了
<asp:DropDownList ID="dllOperator" runat="server"></asp:DropDownList>