C# 绑定下拉列表时出现问题
我试图根据条件将数据绑定到pageload上的下拉列表。代码将在下面进一步解释C# 绑定下拉列表时出现问题,c#,asp.net,drop-down-menu,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 str
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>";
}
}
}
然而,当我加载页面时,像往常一样,应该对数据进行出价的条件得到满足,gridview决定显示如下。。。
是我还是DATAGRID?…??首先,这不是DataGridView。其次,您需要设置其DataTextField属性。您需要设置组合框的DataTextField属性。您正在尝试将组合框绑定到数据视图。你不是哑巴,但这绝对是你的错 这背后的问题是,您绑定的(
DataView
)是DataRowView
的集合,当组合框为一维时,它是一个多维实体(即表)
之所以会出现这种情况,是因为组合框使用ToString()
方法呈现它们绑定到的对象。因此,将组合框绑定到一组行上,组合框的每个元素都绑定到一行上,这不是一个可以呈现为字符串的实体(因为它通常包含更多的列,即使您有一列)
解决方案1(不好,只需要少量编码和处理)
在IEnumerable
中转换数据视图,您将立即得到它的渲染
解决方案2(良好)
在组合框上,将DataTextField
属性设置为CaseID
我想告诉你这两种解决方案好吧..我想我有点发火了,提到了gridview而不是dataset或dataview。谢谢皮特提醒我,愤怒不会让我们走远。那么,您建议我在哪里设置datatextfield属性?如果你能举一个正在使用的例子,那将非常有帮助。对不起,我没有说明,因为这是一个偏好的问题。您也可以在.aspx/.ascx文件中执行此操作,如Emmm….deadlock。。?我有点困惑。您要求我更改的那串代码实际上是将从上一页传输的值传递到当前页,因此,如果我将“caseID”更改为“caseID”,我想我将无法获取URL中传输的内容…您说什么?很抱歉,没有给出引导性评论。我没有很好地阅读代码。事实上,我认为您给组合框的DataTextField提供了错误的案例参数(caseID),我现在将编辑答案。嗯……非常有用的评论……我知道哪里出了问题。但我不知道如何设置datatextfield。如果你能再详细一点……啊!。。。我想出来了。。。CaseIDDropDownList.DataTextField=“CaseID”;。。。所以我毕竟不是傻瓜…:d设置CaseIDDropDownList.DataSource后,设置DataTextField属性。CaseIDDropDownList.DataTextField=“CaseID”;
private void CreateDataSet()
{
SqlConnection caseConnection = new SqlConnection(strConn);
caseSqlDataAdapter.SelectCommand = new SqlCommand("Select CaseID FROM Cases", caseConnection);
caseSqlDataAdapter.Fill(caseDataSet);
}