无法使用asp .net中的相同存储过程在同一页面上填充多个DropDownList

时间:2016-03-16 10:02:03

标签: c# asp.net twitter-bootstrap stored-procedures

我正在尝试使用asp .net

中的相同存储过程在同一页面上填充多个DropDownList

以下是我的代码:

1)页面加载事件

if(!Page.IsPostBack){
    fillDropDown(SearchByBrand);
    fillDropDown(SearchByBrand1);
}

2)fillDropDown方法

protected void fillDropDown(DropDownList list) {
    try
    {
        cmd = new SqlCommand("fillDropdownWithBrandName", conn);
        cmd.CommandType = CommandType.StoredProcedure;
        reader = cmd.ExecuteReader();

        list.DataSource = reader;
        list.DataTextField = "BrandName";
        list.DataValueField = "BrandID";
        list.DataBind();
        list.Items.Insert(0, new ListItem("--Select Brand--", "0"));
    }
    catch(Exception e){
        errorMessage = e.StackTrace;
    }
    finally{            
        cmd.Dispose();
        conn.Close();
    }
}

3)DropdownList我用过的     1st DropDown

<asp:DropDownList ID="SearchByBrand" CssClass="form-control" runat="server">
</asp:DropDownList>

第二个下拉列表位于UpdatePanel中,它位于bootstrap模式中,在按钮Click上打开。

<asp:DropDownList ID="SearchByBrand1" CssClass="form-control" runat="server">
</asp:DropDownList>

存储过程

ALTER PROCEDURE fillDropdownWithBrandName
AS
BEGIN
SELECT BrandID,BrandName FROM Brand
END

仅填充一个DropdownList。可能是什么问题?

1 个答案:

答案 0 :(得分:1)

您的代码存在一些问题:

  • 在方法fillDropDown中,您关闭连接,但不要在任何其他可见位置再次打开它
  • 您应该使用声明
  • 处理读者对象或使用它