在asp.net c#中在下拉列表值上填充多个文本框

本文关键字:填充 文本 asp net 下拉列表 | 更新日期: 2023-09-27 18:11:41

我有以下员工表,

<>之前姓名|经历|地点13年2年BBB级债券Emp3 4年CCC11年DDD之前

我有一个下拉列表,我已经绑定到表的name列。我有2个文本框:txtExptxtLoc。我想根据从下拉列表中选择的值将文本框填充到表的经验位置列,通过DDL的索引更改或按钮的单击事件。我想在asp.net c#中创建一个代码隐藏文件

在asp.net c#中在下拉列表值上填充多个文本框

步骤1:HTML -使用下拉列表执行回发:

<asp:DropDownList ID="ddlName" runat="server" AutoPostBack="True" 
                  OnSelectedIndexChanged="ddlName_SelectedIndexChanged">
    <asp:ListItem Value="1">Emp 1</asp:ListItem>
    <asp:ListItem Value="2">Emp 2</asp:ListItem>
    <asp:ListItem Value="3">Emp 3</asp:ListItem>
</asp:DropDownList>

步骤2:c# -执行更新控件的代码:

protected void ddlName_SelectedIndexChanged(object sender, EventArgs e)
{
    // Make a call to database/method to retrieve the Employee record based on 
    // Name/ID, which is bound to the drop down. Assumption that you will
    // use an object called Employee with name & location properties)
    Employee emp = GetEmployeeByID(ddlName.SelectedValue);
    txtExp.Text = emp.Name;
    txtLoc.Text = emp.Location;
}

如果你想显示这两件事,那么你必须连接的值,你正在获取的记录绑定下拉列表,我粘贴代码,这将告诉你如何通过名称(下拉列表中选定的值)获得体验

第一步是:

保存要将下拉列表绑定到ViewState的数据表

然后对下拉菜单的selectedindexchanged事件使用以下代码:

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
    if (ViewState["dt"] != null)
    {
        DataTable dt = (DataTable)ViewState["dt"];
        if (dt.Rows.Count > 0)
        {
            string sqlFilter = "name = '" + DropDownList1.SelectedItem.Text + "'";
            DataRow[] data = dt.Select(sqlFilter);
            if (data.Length > 0)
            {
                TextBox1.Text = data["Exp"].ToString();
            }
        }
    }
}

或者如果您想将其传递给db以获得经验和位置,则按以下方式执行:

clsArtBook obj = new clsArtBook();
    DataTable dt = new DataTable();
    dt = obj.getDetailsbyName(DropDownList1.SelectedItem.Text);
    if (dt.Rows.Count > 0) {
        TextBox1.Text = dt.Rows[0]["expeince"].ToString();
        TextBox1.Text = dt.Rows[0]["location"].ToString();
    }

创建一个存储过程,它将按名称获取详细信息,如:

create proc proc_GetDetailsByName
(
@name varchar(100)
)
as
if exists(select 1 from tblemployee where name=@name)
begin
 select location,experince from tblemployee where name=@name
end

它会解决你的问题