在itemtemplate中添加下拉列表并动态填充值

本文关键字:动态 填充 下拉列表 itemtemplate 添加 | 更新日期: 2023-09-27 18:09:18

我在GridView中有一个项模板,我想为每一行创建一个下拉列表,并将其绑定到从数据库中检索的值。。但是我不知道该怎么做。。这就是我到目前为止所拥有的。。但不确定将代码放在哪里以填充每行的下拉列表。。

 <ItemTemplate>
     <asp:DropDownList runat="server" ID="ddlMyQuantity" SelectedValue='<%# 
       (DataBinder.Eval(Container.DataItem,"Quantity")) %>'>
     </asp:DropDownList>
  </ItemTemplate>

在代码隐藏中,不确定如何或将其放在哪里,以便在每一行上创建它。。

 public void BindMyQuantity()
    {
        for (int i = 1; i < 15; i++)
        {
            ddlMyQuantity.Items.Add(i.ToString());
        }
    }

我也不确定我是否能做到这一点,但代码并没有抱怨。。在asp声明中添加SelectedValue

在itemtemplate中添加下拉列表并动态填充值

您可以使用OnRowDataBound动态绑定下拉列表:

protected void GridView_RowDataBound(Object sender, GridViewRowEventArgs e)
{
  if(e.Row.RowType == DataControlRowType.DataRow)
  {
     var dropdownList = (DropDownList)e.Row.FindControl("ddlMyQuantity");
     for (int i = 1; i < 15; i++)
     {
        dropdownList.Items.Add(i.ToString());
     }
     dropdownList.SelectedValue = 
           Convert.ToString(DataBinder.Eval(e.Row.DataItem, "Quantity"));
  }
}

添加绑定:

<asp:GridView ... OnRowDataBound="GridView_RowDataBound">
    ...
</asp:GridView>

据我所知,最好的选择是在网格的"RowDataBound"事件中编写此代码。请参阅下面的示例代码。

   protected void GridView_RowDataBound(..)
   {
       if (e.Row.RowType.Equals(DataControlRowType.DataRow))
        {
            DropDownList ddl = e.Row.FindControl("ddlMyQuantity") as DropDownList;
            if (ddl != null)
            {
               for (int i = 1; i < 15; i++)
               {
                   ddl.Items.Add(i.ToString());
               }
            }
        }
   }

在aspx页面中,提供此

   <ItemTemplate>        
        <asp:DropDownList runat="server" ID="ddlMyQuantity"></asp:DropDownList> 
   </ItemTemplate> 

希望这有帮助!!

<asp:TemplateField HeaderText="Type Cargo" HeaderStyle-HorizontalAlign="Center" ItemStyle-Width="10%" ItemStyle-HorizontalAlign="Center"> 
                <ItemTemplate>
                    <asp:DropDownList ID="DropDownList1" runat="server" DataValueField="DESCRIPTION"></asp:DropDownList>
                </ItemTemplate>
            </asp:TemplateField> 

代码隐藏将如下所示。。。

Dim rowId As DropDownList
        For i As Integer = 0 To gridView1.Rows.Count - 1
            Dim gridrow As GridViewRow = gridView1.Rows(i)
            rowId = DirectCast(gridrow.FindControl("DropDownList1"), DropDownList)
            Dim dt As DataTable = Get_List()
            rowId.DataSource = dt
            rowId.DataBind()
        Next

Get_List是一个返回DataTable 的函数