【问题标题】:Get two database fields, combine, and populate dropdown with the resulting string获取两个数据库字段,组合并使用结果字符串填充下拉列表
【发布时间】:2016-12-09 15:17:54
【问题描述】:

我正在使用此方法填充下拉列表:

private DataTable PopulateDropdown(string connectionString, DataTable datatable, string query, DropDownList myDropDownList, string DataTextField, string DataValueField)
    {
        DataTable dt = new DataTable();
        using (SqlConnection con = new SqlConnection(connectionString))
        {
            try
            {
                SqlDataAdapter adapter = new SqlDataAdapter(query, con);
                adapter.Fill(dt);
                myDropDownList.DataSource = dt;
                myDropDownList.DataTextField = DataTextField;
                myDropDownList.DataValueField = DataValueField;
                myDropDownList.DataBind();
            }
            catch (Exception ex) { }
        }
        return dt;
    }

这很棒,因为它允许我通过更改查询来获取任何数据库字段。示例:

string query = "select firstName, id from table";
    PopulateDropdown(constring, dt, query, aspdropdown, "FirstName", "id");

但是,在填充下拉列表之前,我需要能够从数据库中获取两个字段并将它们连接在一起。我尝试使用:

string query = "select firstName, lastName, id from table";
PopulateDropdown(constring, dt, query, aspdropdown, "FirstName", "id", JoinedString: "lastName");

string JoinedString 作为另一个参数添加并包含在方法中,如下所示:

myDropDownList.DataTextField = DataTextField + JoinedString;

不幸的是,这只是给了我一个空的下拉列表。我真的不知道如何解决这个问题。谁能告诉我如何让它工作?

【问题讨论】:

  • 在查看如何正确构建异常处理之前,我正在尝试让事情正常运行!作为一名新开发人员,很难弄清楚小事,更不用说全面开发良好的实践了。如果代码冒犯了您,我们深表歉意。
  • 也许这只是一个临时捕获,直到他准备好进行完整的异常处理@TimSchmelter

标签: c# datatable


【解决方案1】:

在 sql 查询中执行此操作:

string query = "select firstName + ', ' + lastName AS FullName, id from table";

你会这样调用你的方法:

PopulateDropdown(constring, dt, query, aspdropdown, "FullName", "id");

之后:

using(SqlDataAdapter adapter = new SqlDataAdapter(query, con))
{
    adapter.Fill(dt);
}
myDropDownList.DataSource = dt;
myDropDownList.DataTextField = dataTextField;//FullName
myDropDownList.DataValueField = dataValueField;//ID
myDropDownList.DataBind();

P.S 处理你的SqlDataAdapter

【讨论】:

  • 完美,谢谢。我什至没有想到只是在 SQL 端接近它
  • @JayF1 如果对您有帮助,您可以将答案标记为正确。
  • 是的,我只是在等待计时器允许我这样做!
【解决方案2】:

不幸的是,直接绑定两个值是不可能的。您需要在您的 sql 查询或以后的代码隐藏中向您的数据表添加一个新列。

"select firstName, lastName, id, firstname + lastname AS JoinedString from table";

PopulateDropdown(constring, dt, query, aspdropdown, "FirstName", "JoinedString");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    相关资源
    最近更新 更多