【问题标题】:asp.net c# send ArrayList to gridview not displaying itemsasp.net c#将ArrayList发送到gridview不显示项目
【发布时间】:2016-02-24 17:13:03
【问题描述】:

我有 3 个下拉列表:select yearselect makeselect model。选择模型后,结果应显示在网格视图中。我的桌子是: 使用[(pk)MakeID, MakeName]; 制造型号[(pk)ModelID, Make_ID, ModelYear, ModelName]; 和带有[(pk)WiperID, Model_ID, Description, Emplacement, Price] 的刮水器。当我单步调试时,我看到找到 6 条记录,但在 gridview 中看不到它

我已经查看了这些以寻求帮助,但没有答案

ASP.net DropDownList populates GridView

Binding gridview with arraylist asp.net/c#

我的默认.aspx

    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">  
    </asp:ScriptManager>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
    <div id="wrapper" align="center">
    <asp:DropDownList ID="ddlYear" runat="server" 
     AutoPostBack="true" OnSelectedIndexChanged="Year_Changed">
    </asp:DropDownList>
    <asp:DropDownList ID="ddlMake" runat="server"
    AutoPostBack="true" OnSelectedIndexChanged="Make_Changed">
    </asp:DropDownList>
    <asp:DropDownList ID="ddlModel" runat="server" 
    AutoPostBack="true" 
    OnSelectedIndexChanged="Get_Wipers_By_Model">
    </asp:DropDownList>
    </div>
    </ContentTemplate>
    </asp:UpdatePanel>
    <asp:GridView ID="grdWiperList" runat="server">
    </asp:GridView>

   </form>

我的 Default.aspx.cs

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        //Year drop down list is populated on page load
        string query = "SELECT DISTINCT ModelYear FROM Models";
        string connectionString = ConfigurationManager.ConnectionStrings["wiperConnectionString"].ToString();
        SqlCommand cmd = new SqlCommand(query);
        using (SqlConnection conn = new SqlConnection(connectionString))
        {
            using (SqlDataAdapter sda = new SqlDataAdapter())
            {
                cmd.Connection = conn;
                conn.Open();
                ddlYear.DataSource = cmd.ExecuteReader();
                ddlYear.DataValueField = "ModelYear";
                ddlYear.DataBind();
                conn.Close();
            }
        }

        ddlYear.Items.Insert(0, new ListItem("Select Year", "0"));
        ddlMake.Enabled = false;
        ddlModel.Enabled = false;
        ddlMake.Items.Insert(0, new ListItem("Select Make", "0"));
        ddlModel.Items.Insert(0, new ListItem("Select Model", "0"));

    }
}

private void BindDropDownList(DropDownList ddl, string query, string text, string value, string defaultText)
{
    string connectionString = ConfigurationManager.ConnectionStrings["wiperConnectionString"].ToString();
    SqlCommand cmd = new SqlCommand(query);
    using (SqlConnection conn = new SqlConnection(connectionString))
    {
        using (SqlDataAdapter sda = new SqlDataAdapter())
        {
            cmd.Connection = conn;
            conn.Open();
            ddl.DataSource = cmd.ExecuteReader();
            ddl.DataTextField = text;
            ddl.DataValueField = value;
            ddl.DataBind();
            conn.Close();
        }
    }

    ddl.Items.Insert(0, new ListItem(defaultText, "0"));
}

protected void Year_Changed(object sender, EventArgs e)
{
    //the Makes drop down list is populated on OnSelectedIndexChange event of the Year_Changed event
    ddlMake.Enabled = false;
    ddlModel.Enabled = false;
    ddlMake.Items.Clear();
    ddlModel.Items.Clear();
    ddlMake.Items.Insert(0, new ListItem("Select Make", "0"));
    ddlModel.Items.Insert(0, new ListItem("Select Model", "0"));

    int yearId = int.Parse(ddlYear.SelectedItem.Value);
    if (yearId > 0)
    {
        string query = string.Format("SELECT DISTINCT MakeID, MakeName FROM Makes JOIN Models ON Make_ID = MakeID WHERE ModelYear = {0}", yearId);
        BindDropDownList(ddlMake, query, "MakeName", "MakeID", "Select Make");
        ddlMake.Enabled = true;
    }
}

protected void Make_Changed(object sender, EventArgs e)
{
    ddlModel.Enabled = false;
    ddlModel.Items.Clear();
    ddlModel.Items.Insert(0, new ListItem("Select Model", "0"));

    int yearID = int.Parse(ddlYear.SelectedItem.Value);
    int makeId = int.Parse(ddlMake.SelectedItem.Value);
    if (makeId > 0)
    {
        string query = string.Format("SELECT ModelID, ModelName FROM Models WHERE ModelYear = {0} AND Make_ID = {1}", yearID, makeId);
        BindDropDownList(ddlModel, query, "ModelName", "ModelID", "Select Model");
        ddlModel.Enabled = true;
    }
}

protected void Get_Wipers_By_Model(object sender, EventArgs e)
{
    grdWiperList.DataSource = Connection.GetWipersByModel
    (!IsPostBack ? "%" : ddlModel.SelectedValue);
    grdWiperList.DataBind();

    }
}

我的 Connection.cs

public static ArrayList GetWipersByModel(string modelType)
    {
        ArrayList listResults = new ArrayList();
        string query = string.Format
        ("SELECT * FROM Wipers WHERE Model_ID LIKE '{0}'", modelType);

        try
            {
                conn.Open();
                cmd.Connection = conn;
                cmd.CommandText = query;
                SqlDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    int wiperID = reader.GetInt32(0);
                    int model_id = reader.GetInt32(1);
                    string description = reader.GetString(2);
                    string itemNo = reader.GetString(3);
                    string emplacement = reader.GetString(4);
                    decimal price = reader.GetDecimal(5);
                    Wipers wipers = new Wipers(wiperID, model_id, description, itemNo, emplacement, price);
                   listResults.Add(wipers);
                }
            }
            finally
            {
                conn.Close();
            }
        return listResults;

    }

【问题讨论】:

    标签: c# asp.net gridview arraylist


    【解决方案1】:

    我认为这是因为 updatePanel 控件尝试在 UpdatePanel 控件和 DropDownList 控件之间添加触发器

    【讨论】:

    • 谢谢,我注释掉了UpdatePanel标签,现在我可以在gridview中看到记录了。我正在使用它,因为我有 3 个依赖于先前选择的下拉列表,如果选择更改,将检查是否存在回发问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 2012-06-18
    • 2017-11-06
    • 2019-06-05
    • 2021-12-15
    • 2020-09-11
    相关资源
    最近更新 更多