如何在asp.net下拉列表中将数据表的两个数据列设置为数据源

b4qexyjb  于 11个月前  发布在  .NET
关注(0)|答案(1)|浏览(80)

x1c 0d1xI有一个名为cachedData的DataTable。它的价值是这样的|COL1| COL2||--|--||十二个|- -一种||- -一种|五十九||三十二|- -一种||- -一种|六十三|
我想将这些值设置为下拉列表,而不将它们视为两列。
例如:下拉列表值应为12,59,32,63
我尝试了,但这给了我一个错误。请帮助我将此dataTable值绑定到下拉列表

if (cachedData != null)
            {

                this.DigitalChannelSignatureDropDownList.DataTextField = "COL1"+"COL2";
                this.DigitalChannelSignatureDropDownList.DataValueField = "COL1"+"COL2";
                this.DigitalChannelSignatureDropDownList.DataSource = cachedData;
                this.DigitalChannelSignatureDropDownList.DataBind();

            }

字符串

qmelpv7a

qmelpv7a1#

好吧,不清楚表中的“-”值是什么?
但是,你可以使用一个union查询,并这样说:

SELECT COL1 AS MyCol FROM MyTable WHERE COL1 <> '-'
 UNION ALL 
 SELECT COL2 AS MyCol FROM MyTable WHERE COL2 <> '-'

字符串
上面的输出则变成这样:

MyCol
  -----
  12        
  32        
  59        
  63


也许你的'-'是空值,所以把上面的SQL改为:

SELECT COL1 AS MyCol FROM MyTable WHERE COL1 is not null
 UNION ALL 
 SELECT COL2 AS MyCol FROM MyTable WHERE COL2 is not null


所以,现在要加载下拉列表,我们有这个:
标记:

<asp:DropDownList ID="DropDownList1" runat="server">

        </asp:DropDownList>


后面的代码是这样的:

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            string strSQL =
                @"SELECT COL1 AS MyCol FROM MyTable WHERE COL1 <> '-'
                UNION ALL 
                SELECT COL2 AS MyCol FROM MyTable WHERE COL2 <> '-'";

            DropDownList1.DataTextField = "MyCol";
            DropDownList1.DataSource = General.MyRst(strSQL);
            DropDownList1.DataBind();

            DropDownList1.Items.Insert(0,"Please Select"); // optional 

        }
    }


当然,从SQL返回数据表的代码可以是:

public DataTable MyRst(string strSQL)
    {
        DataTable rstData = new DataTable();

        using (SqlConnection conn = new SqlConnection(Properties.Settings.Default.TEST4))
        {
            using (SqlCommand cmdSQL = new SqlCommand(strSQL, conn))
            {
                cmdSQL.Connection.Open();
                rstData.Load(cmdSQL.ExecuteReader());
            }
        }
        return rstData;
    }

相关问题