如何组合数据库中的两个数据字段并显示在下拉列表中?

时间:2016-08-26 03:41:49

标签: c# sql asp.net

我有一个查询来获取两列中的数据,添加另一列' - ' sig n到结果。现在,我想在下拉列表中显示这些详细信息。另外在另一个函数中,我必须得到选中的值的第一部分(用于创建输出的表的第一列)并再次将其存储在数据库中。查询工作完美。
现在我的问题是,             1)如何在下拉列表中显示已连接列的最终结果?
            2)如何获取下拉列表中所选索引的第一列值?

这是我的代码

public DataSet getSOCode()
{
    string strQuery = @"select  a.AGNTNUM+' - '+a.CLTADDR01
                        from AGNTDTL  a, cscsuboffice b, Web_User_Group c
                        where 
                        a.ARACDE=b.DESCITEM and
                        b.SHORTDESC=c.BRANCH and
                        a.DTETRM='99999999' and 
                        a.AGNTNUM not between '00050000' and '00200000' and
                        a.agntnum <'00300000' and
                        a.agtype not in ('PA','LG','BK') and
                        c.EMPID='000101' 
                        order by a.AGNTNUM";
    return SqlHelper.ExecuteDataset(dwhConnString, CommandType.Text, strQuery);
}    

这是aspx.cs代码

 public void loadSOCode()
 {
     DataSet ds = new DataSet();
     ds = db.getSOCode();


     if (ds.Tables[0].Rows.Count > 0)
     {
            ddlSoCode.DataSource = ds.Tables[0];
            ddlSoCode.DataTextField ="AGNTNUM" + "CLTADDR01";
            ddlSoCode.DataValueField = "AGNTNUM" + "CLTADDR01";
            ddlSoCode.DataBind();

            ddlSoCode.Items.Insert(0, new ListItem("--Select The Agent--", "--Select The Agent--"));

     }
}

2 个答案:

答案 0 :(得分:1)

更改查询,如下所示:

string strQuery = @"select a.AGNTNUM , a.AGNTNUM + ' - ' + a.CLTADDR01 as DisplayItem " +
                    " from AGNTDTL  a, cscsuboffice b, Web_User_Group c" +
                    " where .. // give conditions here 

然后绑定代码将是:

ddlSoCode.DataSource = ds.Tables[0];
ddlSoCode.DataTextField ="DisplayItem";
ddlSoCode.DataValueField = "AGNTNUM";
ddlSoCode.DataBind();

这样SelectedValue会给你AGNTNUM,而组合框会显示a.AGNTNUM and a.CLTADDR01

的组合

答案 1 :(得分:0)

您不能使用列名的组合设置DataTextFieldDataValueField,实际上在这种情况下sql不返回列名。使用别名来提供新名称。

public DataSet getSOCode()
{
    string strQuery = @"select  a.AGNTNUM+' - '+a.CLTADDR01 AS NewColumn
                        from AGNTDTL  a, cscsuboffice b, Web_User_Group c
                        where 
                        a.ARACDE=b.DESCITEM and
                        b.SHORTDESC=c.BRANCH and
                        a.DTETRM='99999999' and 
                        a.AGNTNUM not between '00050000' and '00200000' and
                        a.agntnum <'00300000' and
                        a.agtype not in ('PA','LG','BK') and
                        c.EMPID='000101' 
                        order by a.AGNTNUM";
    return SqlHelper.ExecuteDataset(dwhConnString, CommandType.Text, strQuery);
} 

现在使用该列名设置文本和值字段。

public void loadSOCode()
 {
     DataSet ds = new DataSet();
     ds = db.getSOCode();


     if (ds.Tables[0].Rows.Count > 0)
     {
            ddlSoCode.DataSource = ds.Tables[0];
            ddlSoCode.DataTextField ="NewColumn";
            ddlSoCode.DataValueField = "NewColumn";
            ddlSoCode.DataBind();

            ddlSoCode.Items.Insert(0, new ListItem("--Select The Agent--", "--Select The Agent--"));

     }
}