尝试根据条件将数据绑定到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决定显示如下...
是我还是DATAGRID?...... ??
答案 0 :(得分:4)
您正在尝试将组合框绑定到数据视图。你不是 dumb ,但这绝对是你的错!
这背后的问题是你绑定的内容(DataView
)是DataRowView
的集合,当组合框是一维时,它是一个多维实体(即表)。
你得到这个的原因是组合框使用ToString()
方法来渲染它们绑定的对象。因此,将所有内容组合在一起,您将组合框绑定到行集合,组合框的每个元素都绑定到一行,这不是可以呈现为字符串的实体(因为它包含更多列一般,即使在你的情况下,你有一列。)
在IEnumerable<string>
中转换DataView,您将立即渲染它!
在组合框上执行操作,将DataTextField
属性设置为CaseID
我想告诉你两种解决方案
答案 1 :(得分:3)
首先,这不是DataGridView。其次,您需要设置其DataTextField属性。
答案 2 :(得分:0)
您需要设置ComboBox的DataTextField属性。