【问题标题】:How to get Datasource() for Dropdownbox C# ASP.NET如何为 Dropdownbox C# ASP.NET 获取 Datasource()
【发布时间】:2013-11-25 15:08:03
【问题描述】:

我有表 tblDepartments 和列 DeptID, Department, Description。我也有下拉框drpDepartments。我想在下拉框中显示Department 列的内容。我尝试将此 C# 代码用于 winforms,但它不起作用:

        drpDepartments.DataSource = dsDep.Tables["tblDepartment"];
        drpDepartments.DisplayMember = "Department";
        drpDepartments.ValueMember = "DeptID";
        drpDepartments.Text = "Choose Department";

如何使用 ASP.NET C# 来实现?谢谢。

新代码(还是不行)

        sConn = new SqlConnection(sStr);
        daEmp = new SqlDataAdapter("SELECT * FROM tblEmployee", sConn);
        daDep = new SqlDataAdapter("SELECT * FROM tblDepartment", sConn);
        dsEmp = new DataSet();
        dsDep = new DataSet();

        daEmp.Fill(dsEmp, "tblEmployee");
        daDep.Fill(dsDep, "tblDepartment");

        dsEmp.Tables["tblEmployee"].PrimaryKey = new DataColumn[] { dsEmp.Tables["tblEmployee"].Columns["EmployeeID"] };

        DataTable dt=new DataTable();
        daDep.Fill(dt);

        drpDepartments.DataTextField = "Department";
        drpDepartments.DataValueField = "DeptID";
        drpDepartments.DataSource = dt;
        drpDepartments.DataBind();

【问题讨论】:

标签: c# asp.net


【解决方案1】:

你必须在 asp.net webForms 中这样称呼它

        drpDepartments.DataSource = dsDep.Tables["tblDepartment"];// Set DataSource Table First
        drpDepartments.DataTextField = "Department";// Set Column Name of DataTable to set as Text Field
        drpDepartments.DataValueField = "DepartmentID";// Set Column Name of DataTable to set as Value Field
        drpDepartments.DataBind();

您必须在 using System.Web.UI.WebControls; 命名空间中使用它。看来您使用的是 winforms 命名空间。

DataTextField 等价于DisplayMemberValueMember 等价于DataValueField

【讨论】:

  • 这段代码没有任何意义。它会有效地创建一个空的下拉列表,因为数据源是一个新实例化的 DataTable。
  • 我应该删除using System.Web.UI.WebControls;吗?我应该使用什么?
  • DisplayMemberValueMember 属性在 Web 命名空间中不可用。所以我假设你正在使用一些 winforms 命名空间。
  • 你应该使用using System.Web.UI.WebControls;命名空间来绑定下拉列表。
  • Choose DepartmentDepartmentID 必须是 DataTable 中列的名称。调试时检查 VisualStudio 中填充的 DataTable
【解决方案2】:
drpDepartments.DataSource = ds1;
drpDepartments.DataTextField = "textcol";
drpDepartments.DataValueField = "valuecol";
drpDepartments.DataBind();

在 btn_save 方法中执行此操作后 添加这个..

 cmd.Parameters.AddWithValue("@a", drpDepartments.SelectedValue);

希望对你有帮助。

【讨论】:

    【解决方案3】:

    你调用 DataBind() 了吗?

    drpDepartments.DataSource = dsDep.Tables["tblDepartment"];
    drpDepartments.DisplayMember = "Department";
    drpDepartments.ValueMember = "DepartmentID";
    drpDepartments.Text = "Choose Department";
    drpDepartments.DataBind();
    

    【讨论】:

    • 我收到此错误'drpDepartments' has a SelectedValue which is invalid because it does not exist in the list of items.
    • 这是与您询问的问题不同的问题。您必须设置 drpDepartments.SelectedValue = ???某处并且您设置的值在下拉项目列表中不存在(它会查找具有相同值的项目)。
    • 仍然没有出现,但错误现在消失了。请检查我是否更新了代码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-30
    • 1970-01-01
    • 1970-01-01
    • 2018-01-17
    • 1970-01-01
    相关资源
    最近更新 更多