簡體   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