我有一个查询来获取两列中的数据,添加另一列' - ' 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--"));
}
}
答案 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)
您不能使用列名的组合设置DataTextField
和DataValueField
,实际上在这种情况下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--"));
}
}