C# 如何在usercontrol dropdownlist中绑定值?
我绑定usercontrol dropdownlist中的值 但当我添加usercontrol行时,时间值不会绑定到dropdownlist中 代码: .ascxC# 如何在usercontrol dropdownlist中绑定值?,c#,asp.net,drop-down-menu,user-controls,loadviewstate,C#,Asp.net,Drop Down Menu,User Controls,Loadviewstate,我绑定usercontrol dropdownlist中的值 但当我添加usercontrol行时,时间值不会绑定到dropdownlist中 代码: .ascx .aspx .aspx.cs protected void Page_Load(object sender, EventArgs e) { if(!IsPostback) { BindActivities(); } } protected v
.aspx
.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostback)
{
BindActivities();
}
}
protected void BindActivities()
{
DropDownList dropActivities = Timesheet.FindControl("DropDownActivities") as DropDownList;
DbConnection.Open();
OleDbCommand cmd1 = new OleDbCommand("select designation from emp_master where username = '" + username + "'", DbConnection);
OleDbDataAdapter da = new OleDbDataAdapter(Deptcmd);
DataSet ds = new DataSet();
da.Fill(ds);
// DbConnection.Close();
dropActivities.DataSource = ds;
dropActivities.DataTextField = "ActivityName";
dropActivities.DataBind();
dropActivities.Items.Insert(0, new ListItem("--Select--", "0"));
}
public List<string> NoOfControls
{
get
{
return ViewState["NoOfControls"] == null ? new List<string>() : (List<string>)ViewState["NoOfControls"];
}
set
{
ViewState["NoOfControls"] = value;
}
}
protected override void LoadViewState(object savedState)
{
base.LoadViewState(savedState);
if (IsPostBack)
{
GenerateControls();
}
}
private void GenerateControls()
{
foreach (string i in NoOfControls)
{
TimesheetUserControl ctrl = (TimesheetUserControl)Page.LoadControl("TimesheetUserControl.ascx");
ctrl.ID = i;
this.rpt1.Controls.Add(ctrl);
}
}
protected void ButtonAdd_Click(object sender, EventArgs e)
{
Button thisButton = (Button)sender;
List<string> temp = null;
var uc = (TimesheetUserControl)this.LoadControl(@"TimesheetUserControl.ascx");
string id = Guid.NewGuid().ToString();
uc.ID = id;
temp = NoOfControls;
temp.Add(id);
NoOfControls = temp;
rpt1.Controls.Add(uc);
}
受保护的无效页面加载(对象发送方,事件参数e)
{
如果(!IsPostback)
{
绑定活动();
}
}
受保护的活动()
{
DropDownList dropActivities=时间表。FindControl(“DropDownActivities”)作为DropDownList;
DbConnection.Open();
OleDbCommand cmd1=新的OleDbCommand(“从emp_主机中选择名称,其中username='“+username+'”,DbConnection);
OleDbDataAdapter da=新的OleDbDataAdapter(Deptcmd);
数据集ds=新数据集();
da.填充(ds);
//DbConnection.Close();
dropActivities.DataSource=ds;
dropActivities.DataTextField=“ActivityName”;
dropActivities.DataBind();
插入(0,newlistItem(“--Select--”,0”);
}
公共列表NoOfControls
{
得到
{
返回ViewState[“NoOfControls”]==null?新建列表():(列表)ViewState[“NoOfControls”];
}
设置
{
ViewState[“NoOfControls”]=值;
}
}
受保护的覆盖无效LoadViewState(对象保存状态)
{
base.LoadViewState(savedState);
如果(iPostBack)
{
生成控件();
}
}
私有void GenerateControls()
{
foreach(NoOfControls中的字符串i)
{
TimesheetUserControl ctrl=(TimesheetUserControl)Page.LoadControl(“TimesheetUserControl.ascx”);
ctrl.ID=i;
this.rpt1.Controls.Add(ctrl);
}
}
受保护的无效按钮单击(对象发送者,事件参数e)
{
按钮thisButton=(按钮)发送器;
列表温度=空;
var uc=(TimesheetUserControl)this.LoadControl(@“TimesheetUserControl.ascx”);
字符串id=Guid.NewGuid().ToString();
uc.ID=ID;
温度=无控制;
临时添加(id);
NoOfControls=温度;
rpt1.控件.添加(uc);
}
在下图中,如果单击“添加”按钮,则会添加行,但第二个值不会绑定到dropdownlist中
有什么想法吗?提前感谢。根据您提供的id查找用户控件,然后您可以在用户控件内找到
下拉列表
protected void BindActivities()
{
foreach (string controlName in NoOfControls)
{
TimesheetUserControl userControl = Timesheet.FindControl(controlName) as TimesheetUserControl;
if(userControl == null) return;
DropDownList dropActivities = userControl.FindControl("DropDownActivities") as DropDownList;
if(dropActivities == null) return;
DbConnection.Open();
OleDbCommand cmd1 = new OleDbCommand("select designation from emp_master where username = '" + username + "'", DbConnection);
OleDbDataAdapter da = new OleDbDataAdapter(Deptcmd);
DataSet ds = new DataSet();
da.Fill(ds);
// DbConnection.Close();
dropActivities.DataSource = ds;
dropActivities.DataTextField = "ActivityName";
dropActivities.DataBind();
dropActivities.Items.Insert(0, new ListItem("--Select--", "0"));
}
}
根据您给定的id查找用户控件,然后可以在usercontrol中找到DropDownList
protected void BindActivities()
{
foreach (string controlName in NoOfControls)
{
TimesheetUserControl userControl = Timesheet.FindControl(controlName) as TimesheetUserControl;
if(userControl == null) return;
DropDownList dropActivities = userControl.FindControl("DropDownActivities") as DropDownList;
if(dropActivities == null) return;
DbConnection.Open();
OleDbCommand cmd1 = new OleDbCommand("select designation from emp_master where username = '" + username + "'", DbConnection);
OleDbDataAdapter da = new OleDbDataAdapter(Deptcmd);
DataSet ds = new DataSet();
da.Fill(ds);
// DbConnection.Close();
dropActivities.DataSource = ds;
dropActivities.DataTextField = "ActivityName";
dropActivities.DataBind();
dropActivities.Items.Insert(0, new ListItem("--Select--", "0"));
}
}
值在dropdownlist中绑定,但当我单击“添加新行”按钮时,行被添加,但在dropdownlist中值未绑定,请参见图像添加新用户控件时,需要重新绑定数据集。dropActivities.DataSource=ds;只有在未回发时才执行此操作。值在dropdownlist中绑定,但当我单击“添加新行”按钮时,行被添加,但在dropdownlist中值未绑定,请参见图像添加新用户控件时,需要重新绑定数据集。dropActivities.DataSource=ds;只有在未回发时才可以执行此操作。
protected void BindActivities()
{
foreach (string controlName in NoOfControls)
{
TimesheetUserControl userControl = Timesheet.FindControl(controlName) as TimesheetUserControl;
if(userControl == null) return;
DropDownList dropActivities = userControl.FindControl("DropDownActivities") as DropDownList;
if(dropActivities == null) return;
DbConnection.Open();
OleDbCommand cmd1 = new OleDbCommand("select designation from emp_master where username = '" + username + "'", DbConnection);
OleDbDataAdapter da = new OleDbDataAdapter(Deptcmd);
DataSet ds = new DataSet();
da.Fill(ds);
// DbConnection.Close();
dropActivities.DataSource = ds;
dropActivities.DataTextField = "ActivityName";
dropActivities.DataBind();
dropActivities.Items.Insert(0, new ListItem("--Select--", "0"));
}
}