任何人都可以帮我解决如何填写网格分组控件中的下拉列表。我是syncfusion控件的新手。感谢任何一个帮助
答案 0 :(得分:1)
您可以使用Rowdatabound填充Syncfusion GridGroupingControl中的下拉列表。
在ASPX文件中添加下拉列表:
<强> [ASPX] 强>
<Columns>
………
<syncfusion:GridColumnDescriptor MappingName="Country" HeaderText="Country">
<ItemTemplate>
<asp:DropDownList ID="ddlcountry" runat="server" Width="100px"/>
</ItemTemplate>
</syncfusion:GridColumnDescriptor>
………
</columns>
使用Rowdatabound
<强> [CS] 强>
protected void GridGroupingControl1_RowDataBound(object sender, Syncfusion.Web.UI.WebControls.Grid.Grouping.RowDataBoundEventArgs e)
{
if (e.Element.Kind == DisplayElementKind.Record && e.Element.Kind != DisplayElementKind.AddNewRecord)
{
for (int i = 0; i < e.Row.Cells.Count; i++)
{
if (((Syncfusion.Web.UI.WebControls.Grid.Grouping.GridCell)(e.Row.Cells[i])).ColumnDescriptor.Name == "Country")
{
myConnection = new SqlCeConnection(ConnectionString);
myConnection.Open();
DropDownList ddl = (DropDownList)e.Row.Cells[i].FindControl("ddlcountry");
SqlCeCommand cmd = new SqlCeCommand("SELECT Distinct Country FROM Employees", myConnection);
SqlCeDataAdapter da = new SqlCeDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
myConnection.Close();
ddl.DataSource = ds;
ddl.DataTextField = "Country";
ddl.DataValueField = "Country";
ddl.DataBind();
ddl.Items.Insert(0, new ListItem("--Select--", "0"));
}
}
}
}
如果您需要任何其他问题或疑虑,请告诉我们
答案 1 :(得分:0)
第一个if条件仅用于填充记录行的下拉列表。此条件在初始分组时未执行,因为所有记录都是折叠状态,而标题行仅显示在网格中。而且如果网格中没有记录,它也不会执行。
如果我们删除了第一个if条件,则将对Column Header和标题行执行代码。标题行没有ColumnDescriptor,因此这是“对象引用未设置为对象实例”问题的原因。