猿问

数据不会根据下拉列表选择绑定到 gridview

我目前有两个下拉列表,它们填充了数据库中的名称。我想要做的是选择一个播放器,然后单击按钮,将表中的数据填充到 gridview 中。现在我只是收到一条“没有返回数据”的消息,我不知道为什么。


 <asp:DropDownList ID="ddl_QB1"  runat="server" Width="200px" AppendDataBoundItems="True"   

AutoPostBack="True"  Height="16px" DataTextField="Player" DataValueField="id"  ></asp:DropDownList>


<asp:Gridview ID="GridView1" runat="server" AutoGenerateColumns="false" Visible="true" 

                            BackColor="White" BorderColor="#336666" BorderStyle="Double" BorderWidth="3px"   

                            CellPadding="4" GridLines="Horizontal" ShowHeaderWhenEmpty="True" EmptyDataText="No records Found"> 

                             <Columns>   

                                <asp:TemplateField HeaderText="Total Points">  

                                    <EditItemTemplate>  

                                        <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("[Pts]") %>'>  

                                        </asp:TextBox>  

                                    </EditItemTemplate>  

                                    <ItemTemplate>  

                                        <asp:Label ID="Label2" runat="server" Text='<%# Bind("Pts") %>'>  

                                        </asp:Label>  

                                    </ItemTemplate>  

    protected void Page_Load(object sender, EventArgs e)

    {

        LoadQuarterbacks();


        if (!Page.IsPostBack)

        {

            SqlConnection con = new SqlConnection(connectionstring);


            SqlCommand cmd = new SqlCommand("select [id], [Player], [Pts], [Att], [Cmp], [Yds], [TD] from Quarterbacks", con);

            SqlDataAdapter sda = new SqlDataAdapter(cmd);

            DataTable dt = new DataTable();

            sda.Fill(dt);

            ddl_QB1.DataSource = dt;

            ddl_QB1.DataBind();

        }



    }



三国纷争
浏览 152回答 1
1回答

素胚勾勒不出你

以下 3 处更改将提供所需的结果。首先 - AutoPostBack 应在下拉元素上设置为 false,因为即使在您单击按钮之前,这也会导致回发。第二 - 删除 if(!Page.IsPostback) 中的当前代码。此代码不是必需的。此外,此代码未设置 ddl_QB1 和 ddl_QB2 的 DataTextField 和 DataValueField 属性。第三 - 将方法调用 LoadQuarterbacks() 放在 if(!Page.IsPostback) 中。我们不必在每个请求上为 ddl_QB1 和 ddl_QB2 绑定这些值。如果下拉控件需要刷新,则在按钮单击结束时绑定 gridview 后调用 LoadQuarterbacks() 方法。这样您就可以在重新绑定之前从下拉列表中捕获选定的值。重新绑定 DropDowns 会导致它们丢失选定的值。
随时随地看视频慕课网APP
我要回答