首页 文章

与Telerik RadGrid合作

提问于
浏览
0

我有一个Rad组合框和一个2 RadGrids - grvUser和grvRole

grvUser RadGrid如下......

<telerik:RadGrid ID="grvUser" runat="server" EnableEmbeddedSkins="False"  Skin="skn_RadGrid" SkinsDir="|CurrentTheme|/" SkinsPath="|CurrentTheme|/"
            OnItemCreated="grvUser_ItemCreated" OnItemCommand="grvUser_ItemCommand" OnItemDataBound="grvUser_ItemDataBound" OnNeedDataSource="grvUser_NeedDataSource" GroupHeaderItemStyle-CssClass="rgGroupPanel">
            <MasterTableView TableLayout="Fixed" OverrideDataSourceControlSorting="true" NoMasterRecordsText ="No Records Found, Please Refine Search To Display "> 
                <Columns>
                    <telerik:GridBoundColumn FilterControlAltText="Filter column column" DataField="UserId"
                        UniqueName="UserId" HeaderText="User Id" HeaderStyle-Width="120px" FilterControlWidth="70px"
                        AutoPostBackOnFilter="true">
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn FilterControlAltText="Filter column column" DataField="UserName" AllowFiltering="true" ShowFilterIcon="true"
                        UniqueName="UserName" HeaderText="User Name" HeaderStyle-Width="120px" FilterControlWidth="70px"
                        AutoPostBackOnFilter="true">
                    </telerik:GridBoundColumn>
                </Columns>
            </MasterTableView>
            </telerik:RadGrid>

grvRole RadGrid如下......

<telerik:RadGrid ID="grvRole" runat="server" EnableEmbeddedSkins="False"  Skin="skn_RadGrid" SkinsDir="|CurrentTheme|/" SkinsPath="|CurrentTheme|/"
            OnItemCreated="grvRole_ItemCreated" OnItemCommand="grvRole_ItemCommand" OnItemDataBound="grvRole_ItemDataBound" OnNeedDataSource="grvRole_NeedDataSource" GroupHeaderItemStyle-CssClass="rgGroupPanel">
            <MasterTableView TableLayout="Fixed" OverrideDataSourceControlSorting="true" NoMasterRecordsText ="No Records Found, Please Refine Search To Display "> 
                <Columns>
                    <telerik:GridBoundColumn FilterControlAltText="Filter column column" DataField="RoleId"
                        UniqueName="RoleId" HeaderText="Role Id" HeaderStyle-Width="120px" FilterControlWidth="70px"
                        AutoPostBackOnFilter="true">
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn FilterControlAltText="Filter column column" DataField="RoleName" AllowFiltering="true" ShowFilterIcon="true"
                        UniqueName="RoleName" HeaderText="Role Name" HeaderStyle-Width="120px" FilterControlWidth="70px"
                        AutoPostBackOnFilter="true">
                    </telerik:GridBoundColumn>
                </Columns>
             </MasterTableView>
            </telerik:RadGrid>

RadComboBox的代码如下......

<telerik:RadComboBox ID="ddlType" runat="server" DataValueField="Description"
                        DataTextField="Description" Text="(Select)" AllowCustomText="True" Width="200px"
                        OnClientDropDownClosed="onDropDownClosing1"  Skin="Default">
                        <ItemTemplate>
                            <div onclick="StopPropagation(event)" class="combo-item-template" onmousemove="">
                                <asp:CheckBox runat="server" ID="chk1" onclick="onStatusChecked(this)" />
                                <asp:Label runat="server" ID="Label1" AssociatedControlID="chk1">
                              <%# Eval("Description")%>
                                </asp:Label>
                            </div>
                        </ItemTemplate>
                        <HeaderTemplate>
                            <asp:CheckBox ID="ChckAll" Text="(Check All)" runat="server" OnClick="checkAllStatus(this)" />
                        </HeaderTemplate>
                    </telerik:RadComboBox>

ddlType RadComboBox包含2个值 . 1是User,2是Role . 默认情况下,选择"User",将显示 grvUser . 如果用户选择Role,那么我们需要在aspx页面中显示 grvRole .

如何为RadComboBox触发onchange事件并显示正确的RadGrid用户或角色?

UPDATE

在jQuery中的实现对我来说是好的 .

1 回答

  • 1

    清楚地说明了什么是好的构思,并且说它流畅的话语 .

    如何:根据RadComboBox值显示/隐藏控件?

    首先让我们声明一个包含3个内联项的简单RadComboBox:

    <telerik:RadComboBox ID="RadComboBox1" runat="server" >
        <Items>   
            <telerik:RadComboBoxItem runat="server" Text="ALL" />   
            <telerik:RadComboBoxItem runat="server" Text="grvUser" />   
            <telerik:RadComboBoxItem runat="server" Text="grvRole" /> 
        </Items>
    </telerik:RadComboBox>
    

    1 / . 我们现在需要一个每次用户选择“值”时都会触发的事件 .

    OnSelectedIndexChanged 会做的伎俩 .
    当你谈到jQuery实现时,这里是文档RadComboBox事件:

    注意:除非将AutoPostBack属性设置为True,否则不会触发SelectedIndexChanged,TextChanged和OnCheckAllCheck事件 .

    2 / . 添加正确的事件和一些标签 .

    <telerik:RadComboBox ID="RadComboBox1" runat="server" autopostback="True"
                         OnSelectedIndexChanged="RadComboBox1_SelectedIndexChanged"  >
        <Items>   
            <telerik:RadComboBoxItem runat="server" Text="ALL" />   
            <telerik:RadComboBoxItem runat="server" Text="grvUser" />   
            <telerik:RadComboBoxItem runat="server" Text="grvRole" /> 
        </Items>
    </telerik:RadComboBox>
    <asp:Label ID="Label1" runat="server" Text="My Control 1(grvUser)" />
    <asp:Label ID="Label2" runat="server" Text="My Control 2(grvRole)" />
    

    3 / . 让我们隐藏在代码后面

    protected void RadComboBox1_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
    {
        if (e.Text=="ALL")
        { 
            Label1.Visible = true; 
            Label2.Visible = true; 
        }
        else if (e.Text == "grvUser")            
        {
            Label1.Visible=true; 
            Label2.Visible=false;
        }
        else if (e.Text == "grvRole")
        { 
            Label1.Visible = false; 
            Label2.Visible = true; 
        }
    }
    

    That was a Client-side solution.

相关问题