首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在radgrid中绑定RadCombobox

在radgrid中绑定RadCombobox
EN

Stack Overflow用户
提问于 2020-07-29 20:16:18
回答 2查看 325关注 0票数 0

请告诉我正确的方向,我在radgrid里面有一个radcombobox,只要我编辑这行,它就失去了它的价值

代码语言:javascript
复制
  <telerik:GridTemplateColumn DataField="SupplierRegion" UniqueName="SupplierRegion" HeaderText="Region">
                    <ItemTemplate>
                        <asp:HyperLink runat="server" ID="SupplierRegionHyperlink" Text='<%# Eval("SupplierRegion")%>'></asp:HyperLink>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <telerik:RadComboBox runat="server" ID="SupplierRegionRadComboBox" EnableLoadOnDemand="true" AutoPostBack="true" >
                            <WebServiceSettings Method="GetRegions" Path="~/WebServices/SuppliersWS.asmx"></WebServiceSettings>
                        </telerik:RadComboBox>
                    </EditItemTemplate>
                </telerik:GridTemplateColumn>

下面是我的C#代码

代码语言:javascript
复制
      if (e.CommandName == "Edit")
            {
                GridEditCommandColumn editColumn = (GridEditCommandColumn)SupplierSearchGrid.MasterTableView.GetColumn("EditCommandColumn");
                if (!editColumn.Visible)
                    editColumn.Visible = true;
                GridEditableItem item = (GridEditableItem)e.Item;

                RadComboBox SupplierRegionValue = (RadComboBox)item.FindControl("SupplierRegionRadComboBox");

                SupplierRegionValue.SelectedValue = e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["RegionID"].ToString();
                SupplierRegionValue.Text = e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["Description"].ToString();

            }

在我的编辑中,似乎找不到组合框,因为它返回null

EN

回答 2

Stack Overflow用户

发布于 2020-07-29 20:26:19

查看主题How to bind data to radcombobox inside grid EditItemTemplate

XAML

代码语言:javascript
复制
<telerik:GridTemplateColumn DataField="SupplierRegion" UniqueName="SupplierRegion" HeaderText="Region">
                    <ItemTemplate>
                        <asp:HyperLink runat="server" ID="SupplierRegionHyperlink" Text='<%# Eval("SupplierRegion")%>'></asp:HyperLink>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <telerik:RadComboBox runat="server" ID="SupplierRegionRadComboBox" EnableLoadOnDemand="true" AutoPostBack="true" >
                            <WebServiceSettings Method="GetRegions" Path="~/WebServices/SuppliersWS.asmx"></WebServiceSettings>
                        </telerik:RadComboBox>
                    </EditItemTemplate>
                </telerik:GridTemplateColumn>
            <telerik:GridEditCommandColumn FooterText="EditCommand footer" UniqueName="EditCommandColumn"
                HeaderText="Edit" HeaderStyle-Width="100px" UpdateText="Update">
            </telerik:GridEditCommandColumn>

C#

代码语言:javascript
复制
protected void gvSupplierRegion_ItemDataBound(object sender, GridItemEventArgs e)
{
    if (e.Item is GridDataItem)
    {
        GridDataItem myGridItem = (GridDataItem)e.Item;

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

}

票数 0
EN

Stack Overflow用户

发布于 2020-07-30 12:01:37

因此,对于这些有相同问题的人,我找到了解决方案

在aspx页面中,在datakeyname中添加webservice的id和description列id,然后在edititemtemplate中的radcombobox中添加

代码语言:javascript
复制
<telerik:GridTemplateColumn DataField="SupplierRegion" UniqueName="SupplierRegion" HeaderText="Region">
                    <ItemTemplate>
                        <%# DataBinder.Eval(Container.DataItem,"Description")%>'
                    </ItemTemplate>
                    <EditItemTemplate>
                        <telerik:RadComboBox runat="server" ID="SupplierRegionRadComboBox" AllowCustomText="false" EnableLoadOnDemand="true"  AutoPostBack="true"  Text='<%#Bind("Description") %>'  >
                            <WebServiceSettings Method="GetRegions" Path="~/WebServices/SuppliersWS.asmx"></WebServiceSettings>
                        </telerik:RadComboBox>
                    </EditItemTemplate>
                </telerik:GridTemplateColumn>

在后面的代码中

代码语言:javascript
复制
  protected void SuppliersSearchRadGrid2_ItemDataBound(object sender, GridItemEventArgs e)
    {

        if (e.Item.IsInEditMode)
        {
            GridEditableItem editItem = (GridEditableItem)e.Item;
            RadComboBox combo = (RadComboBox)editItem.FindControl("SupplierRegionRadComboBox");
            combo.SelectedValue = DataBinder.Eval(editItem.DataItem, "RegionID").ToString();
            
        }
      
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63153389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档