如何将数据绑定到网格EditItemTemplate中的radcombobox

时间:2014-06-05 09:22:16

标签: telerik telerik-grid radgrid radcombobox

我尝试将数据绑定到服务器端的radcombobox: 这是我的网格:

            <telerik:RadGrid ID="gvWebUsers" runat="server" 
                OnNeedDataSource="gvWebUsers_NeedDataSource" 
                OnItemCreated="gvWebUsers_ItemCreated"
                Skin="Gray" 
                AutoGenerateColumns="false"
                OnItemDataBound="gvWebUsers_ItemDataBound" 
                AllowAutomaticUpdates="true"
                AllowPaging="true" 
                CssClass="SettingsGrid" 
                Width="99.7%">


                <MasterTableView DataKeyNames="UserID" PageSize="15" EditMode="InPlace" >
                    <Columns>


                <telerik:GridTemplateColumn HeaderText="Category" ItemStyle-Width="240px" UniqueName="Category">
                    <ItemTemplate>
                        <%#DataBinder.Eval(Container.DataItem, "IsUploadAllowed")%>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <telerik:RadComboBox runat="server" ID="RadComboBox2" skin="Gray">
                        </telerik:RadComboBox>
                    </EditItemTemplate>
                </telerik:GridTemplateColumn>

                <telerik:GridEditCommandColumn FooterText="EditCommand footer" UniqueName="EditCommandColumn"
                    HeaderText="Edit" HeaderStyle-Width="100px" UpdateText="Update">
                </telerik:GridEditCommandColumn>


                    </Columns>

                </MasterTableView>
            </telerik:RadGrid>

我在不同的帖子和示例中看到了这个代码的绑定:

protected void gvWebUsers_ItemDataBound(object sender, GridItemEventArgs e)
{
     if (e.Item is GridEditableItem && e.Item.IsInEditMode)
    {

        GridEditableItem editItem = (GridEditableItem)e.Item;
        RadComboBox combo = (RadComboBox)editItem.FindControl("RadComboBox2");
        combo.DataSource = GetUploadStatus();
        combo.DataTextField = "Key";
        combo.DataValueField = "Value";
        combo.DataBind();
    }
}

当我运行此代码时,它永远不会进入“if”子句。 有什么想法吗? 好像我没有“GridEditableItem”。

2 个答案:

答案 0 :(得分:2)

该项不是GridEditableItem,因为它不在EditForm中。

我曾经使用以下方法解决这个问题:

    protected void gvWebUsers_ItemDataBound(object sender, GridItemEventArgs e)
    {
        if (e.Item is GridDataItem)
        {
            GridDataItem myGridItem = (GridDataItem)e.Item;

            if (myGridItem.IsInEditMode)
            {
                RadComboBox combo = (RadComboBox)myGridItem["Category"].FindControl("RadComboBox2");
                combo.DataSource = GetUploadStatus();
                combo.DataTextField = "Value";
                combo.DataValueField = "Key";
                combo.DataBind();
                combo.SelectedValue = DataBinder.Eval(myGridItem.DataItem, "UploadStatus").ToString();
            }
}

答案 1 :(得分:0)

你的网格是否绑定了一些数据?在您的网格中有数据行之前,它不会创建&#39; GridEditableItem。

相关问题