как заполнить раскрывающийся список в элементе управления группировкой захватов с помощью syncfusion в asp.net

У меня есть элемент управления группировкой сетки в syncfusion asp.net с типом ячейки первого столбца в виде поля со списком. Здесь мне нужно заполнить раскрывающийся список при загрузке страницы. Я написал следующий код:

Sqlcommand cmd = new SqlCommand("Select item_Id, item_Name from productsnrwmtrls where item_Ctgry in('R','B')", con);
         sqldataadapter   da = new SqlDataAdapter(cmd);
           Datatable dtLocl = new DataTable();
            da.Fill(dtLocl);

        DropDownList ddlrwmtrl1 = (DropDownList)GridGroupingControl1.FindControl("ddlrwmtrl");

        ddlrwmtrl1.DataTextField = "item_Name";
        ddlrwmtrl1.DataValueField = "item_Id";
        ddlrwmtrl1.DataSource = dtLocl;
        ddlrwmtrl1.DataBind();

Но в этой строке ddlrwmtrl1.DataTextField = "item_Name"; отображается ошибка: Ссылка на объект не установлена ​​на экземпляр объекта.


person user2897388    schedule 07.04.2014    source источник
comment
Имеет ли ddlrwmtrl1 != null ?   -  person kostas ch.    schedule 07.04.2014
comment
Нет, он показывает null в ddlrwmtrl1 DropDownList ddlrwmtrl1 = (DropDownList)GridGroupingControl1.FindControl(ddlrwmtrl); в этой строке, когда я проверял отладчиком   -  person user2897388    schedule 07.04.2014
comment
Так что если ddlrwmtrl1, то логично, что вы получите ошибку. Попробуйте инициализировать ctl другим способом :)   -  person kostas ch.    schedule 07.04.2014
comment
DropDownList ddlrwmtrl = ggcPname.FormEditCell.FindControl(ddlrwmtrl) as DropDownList; Я также пробовал с этой строкой, но все равно показывает ту же ошибку   -  person user2897388    schedule 07.04.2014
comment
protected void GridGroupingControl1_RowDataBound (отправитель объекта, RowDataBoundEventArgs e) { for (int i = 0; i ‹ e.Row.Cells.Count; i++) { if (((Syncfusion.Web.UI.WebControls.Grid.Grouping.GridCell)( e.Row.Cells[i])).ColumnDescriptor != null) { if (((Syncfusion.Web.UI.WebControls.Grid.Grouping.GridCell)(e.Row.Cells[i])).ColumnDescriptor.Name == item_Name) { DropDownList ddlpname = (DropDownList)e.Row.Cells[i].FindControl(ddlrwmtrl); } } } Я тоже пробовал так, но ddlpname показывает null. Где я ошибаюсь   -  person user2897388    schedule 08.04.2014


Ответы (1)


Вы можете заполнить раскрывающийся список в Syncfusion GridGroupingControl с помощью Rowdatabound. Добавьте раскрывающийся список в качестве шаблона элемента в файле ASPX:

[**aspx**]

    <syncfusion:GridColumnDescriptor MappingName="City" HeaderText="City">
          <ItemTemplate>
               <asp:DropDownList ID="ddlCity" runat="server"></asp:DropDownList>
          </ItemTemplate>
    </syncfusion:GridColumnDescriptor>

Событие RowDataBound

**[cs]**


  protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
            GetData();
        this.GridGroupingControl1.RowDataBound += GridGroupingControl1_RowDataBound;
    }

    protected void GridGroupingControl1_RowDataBound(object sender,RowDataBoundEventArgs e)
    {
        if (e.Element.Kind == DisplayElementKind.Record)
        {
            for (int i = 0; i < e.Row.Cells.Count; i++)
            {
                if (((GridCell)e.Row.Cells[i]).ColumnDescriptor.Name == "City")
                {
                    myConnection = new SqlConnection(ConnectionString);
                    myConnection.Open();
                    DropDownList ddl = (DropDownList)e.Row.Cells[i].FindControl("ddlCity");
                    SqlCommand cmd = new SqlCommand("SELECT Distinct City FROM Employees", 
                                             myConnection);
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    DataSet ds = new DataSet();
                    da.Fill(ds);
                    myConnection.Close();
                    ddl.DataSource = ds;
                    ddl.DataTextField = "City";
                    ddl.DataValueField = "City";
                    ddl.DataBind();
                    ddl.Items.Insert(0, new ListItem("--Select--", "0"));
                }
            }
        }
    }

Вы получите сетку с выпадающим списком, как показано ниже.

введите здесь описание изображения

person Sridhar Narasimhan    schedule 10.05.2014