【问题标题】:Populate multiple textboxes on dropdownlist value in asp.net c#在asp.net c#中的下拉列表值上填充多个文本框
【发布时间】:2013-04-30 10:38:21
【问题描述】:

我有以下 Employee 表,

姓名 |经验 |地点 emp1 3 年 aaa emp2 2 岁 bbb emp3 4 年 ccc emp4 1 年 ddd

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

【问题讨论】:

  • 你想用代码来做还是想从数据库中获取?
  • 在 DDL 上更改了名称的索引,您希望其他两列填充您的文本框吗?
  • @raman ,我想用代码来做,asp.net c#
  • @Derek ,通过 DDL 的索引更改或按钮的单击事件。

标签: c# asp.net sql-server


【解决方案1】:

第 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;
}

【讨论】:

    【解决方案2】:

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

    第一步是:

    保存要将下拉列表绑定到 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
    

    它会解决你的问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多