C# 使用“我的编辑和页脚”模板中数据库的数据填充gridview中的dropdownlist

C# 使用“我的编辑和页脚”模板中数据库的数据填充gridview中的dropdownlist,c#,asp.net,C#,Asp.net,我试图在我的孩子嵌套的gridview上有一个dropdownlist,但没有用。我的asp.net 4 web应用程序上有代码隐藏。 下面是我的gridview的代码 <asp:TemplateField HeaderText="Status" SortExpression="Status"> <ItemTemplate><%# Eval("Status")%></

我试图在我的孩子嵌套的gridview上有一个dropdownlist,但没有用。我的asp.net 4 web应用程序上有代码隐藏。 下面是我的gridview的代码

<asp:TemplateField HeaderText="Status" SortExpression="Status">
                                            <ItemTemplate><%# Eval("Status")%></ItemTemplate>
                                            <EditItemTemplate>
                                                <asp:DropDownList ID="DropDownListStatus" runat="server">
                                                </asp:DropDownList>

                                            </EditItemTemplate>
                                            <FooterTemplate>
                                                <asp:DropDownList ID="DropDownListStatus" runat="server" >

                                                </asp:DropDownList>
我试图为我的dropdownlist找到一个控件,使用一个查询并将它绑定到我的dropdownlist,但是我没能做这么简单的事情

在您的代码隐藏中:

protected void GridView2_RowDataBound(object sender, GridViewRowEventArgs e)
{
    //Check if this is our Blank Row being databound, if so make the row invisible
    if (e.Row.RowType == DataControlRowType.DataRow)
    {

        if (((DataRowView)e.Row.DataItem)["CertificateNo"].ToString() == String.Empty) e.Row.Visible = false;
        //Check if is in edit mode
        if ((e.Row.RowState & DataControlRowState.Edit) > 0)
        {
            DropDownList DropDownListStatus = (DropDownList)e.Row.FindControl("DropDownListStatus");
            //Bind status data to dropdownlist
            DropDownListStatus.DataTextField = "Status";
            DropDownListStatus.DataValueField = "Status";
            DropDownListStatus.DataSource = RetrieveStatus();
            DropDownListStatus.DataBind();
            DataRowView dr = e.Row.DataItem as DataRowView;
            DropDownListStatus.SelectedValue = dr["Status"].ToString();
         }

    }
}
然后对于RetrieveStatus:

private DataTable RetrieveStatus()
{
    //fetch the connection string from web.config
    string connString = ConfigurationManager.ConnectionStrings["sb_cpdConnectionString"].ConnectionString;
    //SQL statement to fetch entries from products
    string sql = @"Select distinct Status from cpd_certificates";
    DataTable dtStatus; = new DataTable();
    //Open SQL Connection
    using (SqlConnection conn = new SqlConnection(connString))
    {
        conn.Open();
        //Initialize command object
        using (SqlCommand cmd = new SqlCommand(sql, conn))
        {
            SqlDataAdapter adapter = new SqlDataAdapter(cmd);
            //Fill the result set
            adapter.Fill(dtStatus;);
        }
    }
    return dtStatus;
}
测试和工作最终

private DataTable RetrieveStatus()
{
    //fetch the connection string from web.config
    string connString = ConfigurationManager.ConnectionStrings["sb_cpdConnectionString"].ConnectionString;
    //SQL statement to fetch entries from products
    string sql = @"Select distinct Status from cpd_certificates";
    DataTable dtStatus; = new DataTable();
    //Open SQL Connection
    using (SqlConnection conn = new SqlConnection(connString))
    {
        conn.Open();
        //Initialize command object
        using (SqlCommand cmd = new SqlCommand(sql, conn))
        {
            SqlDataAdapter adapter = new SqlDataAdapter(cmd);
            //Fill the result set
            adapter.Fill(dtStatus;);
        }
    }
    return dtStatus;
}