我目前有两个下拉列表,它们填充了数据库中的名称。我想要做的是选择一个播放器,然后单击按钮,将表中的数据填充到 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(); } }
1 回答
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
以下 3 处更改将提供所需的结果。
首先 - AutoPostBack 应在下拉元素上设置为 false,因为即使在您单击按钮之前,这也会导致回发。
第二 - 删除 if(!Page.IsPostback) 中的当前代码。此代码不是必需的。此外,此代码未设置 ddl_QB1 和 ddl_QB2 的 DataTextField 和 DataValueField 属性。
第三 - 将方法调用 LoadQuarterbacks() 放在 if(!Page.IsPostback) 中。我们不必在每个请求上为 ddl_QB1 和 ddl_QB2 绑定这些值。
如果下拉控件需要刷新,则在按钮单击结束时绑定 gridview 后调用 LoadQuarterbacks() 方法。这样您就可以在重新绑定之前从下拉列表中捕获选定的值。重新绑定 DropDowns 会导致它们丢失选定的值。
- 1 回答
- 0 关注
- 151 浏览
添加回答
举报
0/150
提交
取消