从 informix DB 填充我的下拉列表时遇到问题

Posted

技术标签:

【中文标题】从 informix DB 填充我的下拉列表时遇到问题【英文标题】:Having trouble populating my drop down list from informix DB 【发布时间】:2013-02-18 16:31:59 【问题描述】:

无法填充下拉列表。谁能帮忙,可能是一些关于我的错误的教程?我不完全了解如何填充我的数据源。对 C# 或 ASP.Net 来说很新,所以对我来说放轻松。

protected void Button1_Click(object sender, EventArgs e)

    List<string> _newList = new List<string>();
    if (TextBox1.Text != null)
    
        OdbcDataReader MapResult; //Data Reader
        Database db = new Database(); 
        string lat = "";
        string sql = " SELECT 
                            informix.dbimg_mstr_rec.doc_path 
                       FROM 
                            informix.dbimg_mstr_rec 
                      WHERE 
                            informix.dbimg_mstr_rec.doc_key 
                                = '" + TextBox1.Text + "'";
        try
        

           MapResult = db.ExecQuery(sql, timeOut);
           if (MapResult.Read())
                       
               lat = MapResult["doc_path"].ToString();               
               DropDown1.DataSource = _newList;
               DropDown1.DataTextField = "doc_path";
               DropDown1.DataValueField = "doc_path";
               form1.Controls.Add(DropDown1);
            //end if
           MapResult.Close();
           db.CloseConnection();
           //end while
        //end try
        catch (OdbcException ex)
        
           errList.Add("[User] Error 109: " + ex.Message);
         //end catch
        return;
      //end if
     else
        return;
   

【问题讨论】:

你还没有把结果放在_newList,你需要阅读SQL注入和使用参数化查询而不是SQL连接! 【参考方案1】:

看起来您实际上并未在此代码中的任何位置绑定下拉菜单。你需要做这样的事情:

DropDown1.DataTextField = "doc_path";
DropDown1.DataValueField = "doc_path";
DropDown1.DataSource = dr.ExecuteReader();
DropDown1.DataBind();

或者,您可以使用 SqlDataSource 控件在页面标记中完成所有这些操作。

  <asp:SqlDataSource
      id="SqlDataSource1"
      runat="server"
      DataSourceMode="DataSet"
      ConnectionString="myConnString"
      SelectCommand="myStoredProcedure"
      >
  </asp:SqlDataSource>

  <asp:MyDropDownList id="DropDown1" runat="server" DataSource="SqlDataSource1"
       DataTextField="COLUMN_NAME" DataValueField="COLUMN_NAME" />

【讨论】:

当我添加 dropdown1.dataBind() 它给了我这个错误。 "DataBinding: 'System.Char' 不包含名为 'doc_path' 的属性。" 如果有帮助的话,我也在使用informix DB。 该错误表明您正在尝试将字符串绑定到 DropDown(查询结果)。尝试绑定阅读器:DropDown1.DataSource = MapResult; @freddy 谢谢,在我回到这个页面之前我就想通了。

以上是关于从 informix DB 填充我的下拉列表时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

提交表单时如何从 Spring 下拉列表中填充表单

如何使用 ajax 在 Asp.net 中填充下拉列表

使用Angular.js中的cookie填充选择的相关下拉列表

如何从超大数据表中填充下拉列表?

从相邻下拉列表的单元格中输入数据时,如何删除填充颜色?

根据 3 层应用程序中的下拉列表填充文本框