【问题标题】:Enable "Add New" button of RadGrid after selecting items from RadComboBox which is outside of RadGrid从 RadGrid 外部的 RadComboBox 中选择项目后,启用 RadGrid 的“添加新”按钮
【发布时间】:2015-07-06 07:06:14
【问题描述】:

在我的网页中,我有 Telerik RadGrid,而在 RadGrid 之外,我有一个 Telerik RadCombobox。 我的要求是,如果用户没有从外部 RadCombobox 中选择任何项目并尝试单击 RadGrid 的“添加新”按钮(在其中添加新记录)。它应该显示一条消息/警报“请从 RadCombobox 中选择项目”。 从 RadCombobox 中选择后,用户应该能够在 RadGrid 中添加新记录。

以下是 HTML 代码:

    <telerik:RadComboBox ID="ddlCompany" runat="server" Height="200" Width="240" AutoPostBack="true"
      DropDownWidth="310" EmptyMessage="- Select Product -" HighlightTemplatedItems="true" CausesValidation="false"
      Filter="StartsWith" AppendDataBoundItems="true" AllowCustomText="true"
      DataTextField="Title" DataValueField="Code" OnSelectedIndexChanged="ddlCompany_SelectedIndexChanged">
    </telerik:RadComboBox>

    <telerik:RadGrid ID="RadGrid1" runat="server" AllowSorting="true" AllowPaging="True" PageSize="10"
         OnNeedDataSource="RadGrid1_NeedDataSource" ShowFooter="True" GroupingEnabled="False"        
        AllowAutomaticInserts="True" OnInsertCommand="RadGrid1_InsertCommand" AutoGenerateColumns="false">            
        <PagerStyle Mode="NextPrevAndNumeric"></PagerStyle>
        <MasterTableView Width="100%" ShowHeadersWhenNoRecords="true" CommandItemDisplay="TopAndBottom"
            AutoGenerateColumns="false" InsertItemDisplay="Top" InsertItemPageIndexAction="ShowItemOnFirstPage">

            <Columns>
                <telerik:GridEditCommandColumn>
                </telerik:GridEditCommandColumn>
                 <telerik:GridBoundColumn DataField="ChatTo" HeaderText="To" UniqueName="ChatTo" SortExpression="ChatTo"></telerik:GridBoundColumn>

                 <telerik:GridBoundColumn DataField="ChatCc" HeaderText="Cc" UniqueName="ChatCc" SortExpression="ChatCc"></telerik:GridBoundColumn>

                 <telerik:GridBoundColumn DataField="ChatSubject" HeaderText="Subject" UniqueName="ChatSubject" SortExpression="ChatSubject"></telerik:GridBoundColumn>

                 <telerik:GridBoundColumn DataField="ChatContent" HeaderText="Content" UniqueName="ChatContent" SortExpression="ChatContent"></telerik:GridBoundColumn>                   

                <telerik:GridButtonColumn CommandName="Delete" Text="Delete" UniqueName="DeleteColumn"></telerik:GridButtonColumn>                   
            </Columns>
            <EditFormSettings>
                <EditColumn ButtonType="ImageButton" />
            </EditFormSettings>
            <CommandItemSettings AddNewRecordText="Add new record" RefreshText="Refresh"></CommandItemSettings>
        </MasterTableView>           
    </telerik:RadGrid>

C#代码:

protected void ddlCompany_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
    {
        if (ddlCompany.SelectedItem != null)
        {
            RadGrid1.AllowAutomaticInserts = true;            
        }
    }

我尝试使用上述方法来满足要求,但它没有按预期工作。 我是 Telerik 的新手,请帮我解决一些问题。 提前致谢。

【问题讨论】:

    标签: c# asp.net telerik radgrid radcombobox


    【解决方案1】:

    使用RadComboBoxSelectedIndexChanged 事件。

    protected void RadComboBox1_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
    {
        if (RadComboBox1.SelectedItem != null)
        {
            GridCommandItem cmditem = (GridCommandItem)RadGrid1.MasterTableView.GetItems(GridItemType.CommandItem)[0];
            System.Web.UI.WebControls.Button ctrl = (System.Web.UI.WebControls.Button)cmditem.FindControl("AddNewRecordButton");
            ctrl.Enabled = false;
    
            System.Web.UI.WebControls.LinkButton btn = (System.Web.UI.WebControls.LinkButton)cmditem.FindControl("InitInsertButton");
            btn.Enabled = false;
        }
    
        else
        {
            // alert
        }
    }
    

    请注意,您必须将RadComboBoxAutoPostBack 属性设置为true,否则它不会触发。并添加CommandItemsDisplay="Top"给你MasterTableView

    <MasterTableView AutoGenerateColumns="False" DataSourceID="SqlDataSource1" CommandItemDisplay="Top">
    

    如果您将CommandItemDisplay="Top" 添加到您的MasterTableView,您的RadGrid 上方确实有这些按钮,不是吗?

    【讨论】:

    • 您好罗曼,感谢您的回复。但我在我的网页中使用的是 RadComboBox,而不是 RadCheckBox。此外,此 RadComboBox 位于 RadGrid 之外。请根据我的要求告诉我解决方案。
    • 对不起,我的错。请稍等。
    • 不用担心。等待你的答复。谢谢
    • 感谢您的帮助。但是当我尝试在我身边实现您的逻辑时,我发现 RadComboBox 事件与您的事件略有不同:code protected void ddlCompany_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e) { if (ddlCompany.SelectedItem != null) { RadGrid1. AllowAddNewRow = true; } } code 我也在 "AllowAddNewRow" 处得到红线。请建议我应该在我的代码中更改什么。
    • 你在使用 Telerik.Web.UI 吗?
    【解决方案2】:
    private void radComboBox1_SelectedIndexChanged(object sender,Telerik.WinControls.UI.Data.PositionChangedEventArgs e)
    {
    if (radComboBox1.SelectedIndex==0)
    {
            //Alert Message       
    }
    else
    {
       radGridView1.AllowAddNewRow = true;
       //or Visible The Button
    }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多