我有telerik的RadGrid有四列:
<telerik:RadGrid ID="CountryConstraintsGrid" runat="server" OnNeedDataSource="CountryConstraintsGrid_NeedDataSource"
OnItemDataBound="CountryConstraintsGrid_ItemDataBound" OnDeleteCommand="CountryConstraintsGrid_DeleteCommand" Width="50%">
<MasterTableView AutoGenerateColumns="false" DataKeyNames="cntry_id,inv_limit_num">
<Columns>
<telerik:GridDropDownColumn UniqueName="CountryConstraintsListColumn" ListDataMember="Countries" ListTextField="name" ListValueField="cntry_id" HeaderText="Country" DataField="cntry_id"
DropDownControlType="RadComboBox" EnableEmptyListItem="true" EmptyListItemText="None Selected" EmptyListItemValue="">
</telerik:GridDropDownColumn>
<telerik:GridBoundColumn HeaderText="<%$ Resources:LabelStrings, DealAccess.NumberOfInvestors %>" DataField="inv_limit_num" DataType="System.Int32">
</telerik:GridBoundColumn>
<telerik:GridEditCommandColumn UniqueName="EditColumn" ButtonType="ImageButton" EditImageUrl="images/edit.gif">
</telerik:GridEditCommandColumn>
<telerik:GridButtonColumn UniqueName="DeleteColumn" ButtonType="ImageButton" CommandName="Delete" ImageUrl="images/delete.gif">
</telerik:GridButtonColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
服务器端:
protected void CountryConstraintsGrid_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
CountryConstraintsGrid.DataSource = CountryConstraints;
}
protected void CountryConstraintsGrid_ItemDataBound(object sender, GridItemEventArgs e)
{
}
protected void CountryConstraintsGrid_DeleteCommand(object sender, GridCommandEventArgs e)
{
var deletedCountryID = (int)(((GridDataItem)e.Item).GetDataKeyValue("cntry_id"));
CountryConstraints.RemoveAll(countryConstraint => countryConstraint.cntry_id == deletedCountryID);
}
CountryConstrains
是项目的集合,每个项目都有fieds:cntry_id
,cntry_nm
,inv_limit_num
。
Country
包含字段:cntry_id
,name
。
所以,我有country constraints
项的集合,我想构建网格,列是字符串和图像,但在编辑过程中,前两个字段是:RadComboBox和Input ['text']。
第二个字段工作正常,但我不明白如何将数据绑定到RadComboBoxes。 RadComboBox的所有可能值都位于Countries
项中(它不直接连接到CountryContstaint,但它们具有相同的字段cntry_id
)。
我试图谷歌解决这些问题(telerik's example和documentations)以及论坛中的所有话题,而我却无法理解如何使其发挥作用。
任何人都可以帮助我并解释如何以正确的方式使用GridDropDownColumn
吗?
P.S。我知道,例如,可以将DataSourceID
与SQL源一起使用,但我只想从服务器端的变量中加载列表。
答案 0 :(得分:1)
您可以访问ItemDataBound或ItemCreated中的下拉列表。目前我们有相同的场景,我们在ItemDataBound中实现了它。这是我们的代码示例,从VB转换为C#。
GridEditableItem editItem = (GridEditableItem) e.Item;
RadComboBox combo = (RadComboBox) editItem("CountryConstraintsListColumn").Controls(0);
combo.DataTextField = "name";
combo.DataValueField = "cntry_id";
combo.DataSource = SOURCE;
combo.DataBind();
您只需获取每个下拉列表的源代码并将其连接到控件。可能会有一些额外的行来获取已存储在那里的数据。
我们只是根据项目和列获取相应的控件,我们正在附加源代码。
希望它有所帮助。