繁体   English   中英

asp.net c#将ArrayList发送到gridview不显示项目

[英]asp.net c# send ArrayList to gridview not displaying items

我有3个下拉列表: select yearselect makeselect model 选择模型后,结果应显示在gridview中。 我的表是:用[(pk)MakeID, MakeName]; 具有[(pk)ModelID, Make_ID, ModelYear, ModelName]; 和具有[(pk)WiperID, Model_ID, Description, Emplacement, Price] 当我逐步调试时,我发现找到了6条记录,但是在gridview中却看不到

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

ASP.net DropDownList填充GridView

使用arraylist asp.net/c#绑定GridView

我的Default.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;

    }

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM