问题绑定DropDownList

时间:2011-01-15 18:44:40

标签: c# asp.net drop-down-menu

尝试根据条件将数据绑定到pageload上的下拉列表。代码在下面进一步说明。

public partial class AddExhibit : System.Web.UI.Page
{
    string adminID, caseIDRetrieved;

    DataSet caseDataSet = new DataSet();
    SqlDataAdapter caseSqlDataAdapter = new SqlDataAdapter();
    string strConn = WebConfigurationManager.ConnectionStrings["CMSSQL3ConnectionString1"].ConnectionString;

    protected void Page_Load(object sender, EventArgs e)
    {
        adminID = Request.QueryString["adminID"];
        caseIDRetrieved = Request.QueryString["caseID"];

        if (caseIDRetrieved != null)
        {
            CaseIDDropDownList.Text = caseIDRetrieved;
            //CaseIDDropDownList.Enabled = false;

        }
        else
        {
            try
            {
                CreateDataSet();
                DataView caseDataView = new DataView(caseDataSet.Tables[0]);
                CaseIDDropDownList.DataSource = caseDataView;
                CaseIDDropDownList.DataBind();
            }
            catch (Exception ex)
            {
                string script = "<script>alert('" + ex.Message + "');</script>";
            }

        }


    }

在if..else语句中调用的CreateDataset方法包含以下代码。

private void CreateDataSet()
    {
        SqlConnection caseConnection = new SqlConnection(strConn);
        caseSqlDataAdapter.SelectCommand = new SqlCommand("Select CaseID FROM Cases", caseConnection);
        caseSqlDataAdapter.Fill(caseDataSet);
    }

然而,当我加载页面并像往常一样满足应该对数据出价的条件时,gridview决定显示如下... alt text

是我还是DATAGRID?...... ??

3 个答案:

答案 0 :(得分:4)

您正在尝试将组合框绑定到数据视图。你不是 dumb ,但这绝对是你的错!

这背后的问题是你绑定的内容(DataView)是DataRowView的集合,当组合框是一维时,它是一个多维实体(即表)。

你得到这个的原因是组合框使用ToString()方法来渲染它们绑定的对象。因此,将所有内容组合在一起,您将组合框绑定到行集合,组合框的每个元素都绑定到一行,这不是可以呈现为字符串的实体(因为它包含更多列一般,即使在你的情况下,你有一列。)

解决方案1(糟糕,需要更多编码和处理)

IEnumerable<string>中转换DataView,您将立即渲染它!

解决方案2(好)

在组合框上执行操作,将DataTextField属性设置为CaseID

我想告诉你两种解决方案

答案 1 :(得分:3)

首先,这不是DataGridView。其次,您需要设置其DataTextField属性。

答案 2 :(得分:0)

您需要设置ComboBox的DataTextField属性。