繁体   English   中英

在 radgrid 中绑定一个 RadCombobox

[英]Binding a RadCombobox inside a radgrid

请有人指出我正确的方向,我在 radgrid 中有一个 radcombobox,一旦我编辑该行,它就会失去它的价值

  <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# 代码

      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();

            }

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

查看主题如何将数据绑定到网格 EditItemTemplate 内的 radcombobox

XAML

<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#

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();
        }

}

所以对于那些有同样问题的人,我找到了解决方案

在 aspx 页面中,在数据键名中添加 web 服务的 id 和描述列 id,然后在 radcombobox 的 edititemtemplate 中

<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>

在后面的代码中

  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();
            
        }
      
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM