我需要在转发器控件中绑定我有4列的值,在2个下拉列表和2个文本框中。
我的要求是当我根据选择选择第一列中的第一个下拉列表时,余额3列应该在同一行的转发器中获得Bind。
,例如
在第一栏 DropDown 中,当我选择EmployeeName
时,转发器中同一行中的下一个 3列(AGE,NO,ADDRESS)应为自动填写。
protected void ddlEmployee_SelectedIndexChanged(object sender, EventArgs e)
{
using (EHSIMSDataContext db = new EHSIMSDataContext(EHSIMSConnectionString.GetConnectionString()))
{
(((sender as DropDownList).Parent).FindControl("email") as TextBox).Text = ;
(((sender as DropDownList).Parent).FindControl("Depart") as TextBox).Text = "Age";
}
}
中继控制
protected void rptactions_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
DropDownList ddlemployee = e.Item.FindControl("ddlemployee") as DropDownList;
using (EHSIMSDataContext db = new EHSIMSDataContext(EHSIMSConnectionString.GetConnectionString()))
{
List<EMPLOYEE> objlistemp = (from ct in db.EMPLOYEEs
orderby ct.FIRSTNAME
select ct).ToList<EMPLOYEE>();
ddlemployee.Items.Clear();
ddlemployee.Items.Add(new ListItem("--SELECT--", ""));
foreach (EMPLOYEE emp in objlistemp)
{
ddlemployee.Items.Add(new ListItem(emp.FIRSTNAME, emp.EMPLOYEE_ID.ToString()));
}
}
答案 0 :(得分:0)
这是您提到的方案的一种方式..
protected void ddlEmployee_SelectedIndexChanged(object sender, EventArgs e)
{
(((sender as DropDownList).Parent).FindControl("txtAge") as TextBox).Text = "Age";
}
同样,您也可以找到其他控件......
注意:在aspx文件中,您需要将OnSelectedIndex
已更改事件添加到Repeater中的此DropDownList控件,并且还应将其AutoPostBack
属性设置为True
<强>更新强>
如果您的模型类如下所示
class Employee
{
public int ID {get; set};
public int Age {get; set};
public string Name {get; set};
public string Address {get; set};
}
如果对象lstEmployees
(类型为List<Employee>
)中有员工列表,则可以检索ID
使用employeeID
的员工姓名以下查询
lstEmployees.Find(e => e.ID == employeeId).Name
当然,在尝试读取属性之前,您始终需要执行所有类型的空检查,否则如果找不到匹配项,则可能导致NullReferenceException
。