如何在c#中绑定gridview rowdatabound中的dropdownlist?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在c#中绑定gridview rowdatabound中的dropdownlist?相关的知识,希望对你有一定的参考价值。

这是我在c#中的GridView上的编辑项模板中的下拉列表

<asp:DropDownList runat="server" ID="ddlFl" AutoPostBack="true"
 OnSelectedIndexChanged="ddlFl_SelectedIndexChanged"
      DataValueField='<%# Eval("ID").ToString() %>'>
   <asp:ListItem Text="[ Select ]" Value=""></asp:ListItem>
   <asp:ListItem Text="-------------" Value=""></asp:ListItem>
   <asp:ListItem Text="0" Value="0"></asp:ListItem>
   <asp:ListItem Text="1" Value="1"></asp:ListItem>
   <asp:ListItem Text="2" Value="2"></asp:ListItem>
</asp:DropDownList>

当用户点击编辑时,网格进入编辑模式。

在产品子类别的情况下,我们将tbl_2表中可用的所有产品类别的列表加载到下拉列表中,并且可供用户选择,如果在行存在值,则在下拉列表中选择该值。

我在这种模式下尝试没有成功,因为我有错误:

数据绑定方法(如Eval(),XPath()和Bind())只能在数据绑定控件的上下文中使用。

怎么解决这个?

你能帮助我吗?

提前感谢您的帮助,非常感谢。

protected void ddlFl_SelectedIndexChanged(object sender, EventArgs e)
{

    DropDownList btn = (DropDownList)sender;
    string indexID = btn.DataValueField;
    string LinkID = btn.SelectedValue;
    GridViewRow row = (GridViewRow)btn.NamingContainer;

    Response.Write(LinkID);

}


protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {

        if (e.Row.DataItem != null)
        {
            if ((e.Row.RowState & DataControlRowState.Edit) > 0)
            {
                DropDownList ddlFl = (DropDownList)e.Row.FindControl("ddlFl");
                ddlFl.DataTextField = "Dip";
                ddlFl.DataValueField = "Dip";
                ddlFl.DataSource = RetrieveSubCategories();
                ddlFl.DataBind();
                DataRowView dr = e.Row.DataItem as DataRowView;
                ddlFl.SelectedValue = dr["Dip"].ToString();
            }
        }
    }
}


private DataTable RetrieveSubCategories()
{
    DataTable dtSubCategories = new DataTable();

    sql = @String.Format(" SELECT Dip FROM `tbl_2` GROUP BY Dip; ");

    using (OdbcConnection myConnectionString =
      new OdbcConnection(ConfigurationManager.ConnectionStrings["Connmysql"].ConnectionString))
    {
        using (OdbcCommand cmd = 
            new OdbcCommand(sql, myConnectionString))
        {
            {
                OdbcDataAdapter adapter = 
                    new OdbcDataAdapter(cmd);
                adapter.Fill(dtSubCategories);
            }
        }
    }
    return dtSubCategories;
}
答案

DataSource必须位于第一个位置,然后是数据文本和值字段:

DropDownList ddlFl = (DropDownList)e.Row.FindControl("ddlFl");
ddlFl.DataSource = RetrieveSubCategories();
ddlFl.DataTextField = "Dip";
ddlFl.DataValueField = "Dip";
ddlFl.DataBind();

以上是关于如何在c#中绑定gridview rowdatabound中的dropdownlist?的主要内容,如果未能解决你的问题,请参考以下文章

C#GridView中ImageField绑定图片

Web开发中,如何在GridView每次绑定后将滚动条移动到下方?

在gridview(Web应用程序)中添加数据C#

如何在gridview中绑定数据表中的复选框值

GridView中的CheckBox如何绑定数据?

vs2005(c#.net2.0)中用gridview查询数据库问题,高手请进