4

空の子エントリが含まれることがある階層的な Telerik RadGrid があります。これらの場合、デフォルトのテキスト「表示する子レコードはありません」をユーザーロケール固有のもので上書きしたいと考えています。

だから私はこれを行うことができます:

    <telerik:RadGrid ID ="SettingsGrid" ... />
        <mastertableview ... />
            <DetailTables>
                <telerik:GridTableView ... />
                    <asp:Label ID="NoRecordLabel" runat="server" Text="whatever"/></div></NoRecordsTemplate>

これにより、「なんでも」というテキストが表示されるべきときに表示されます。

しかし、明らかにこれを動的に実行したいのですが、次の 2 つの方法の両方で失敗しました。

1) .ascx ファイルで .resx ファイルを参照する。その名前空間をインポートし、特定のリソースを次のように参照します。

Text="<%$ Resx:SiteTextResources.Globals_Close %>"

(これは、同じソリューション内の他のファイルで機能します)

しかし、これは空のテキストしか生成しません。

2) コード ビハインドからプログラムでラベルを取得できませんでした。私はこれを見ました:http://www.telerik.com/community/forums/aspnet-ajax/grid/how-to-access-controls-in-norecordstemplate.aspxしかし、私はそのアプローチを機能させることができませんでしたラベルが見つからないようです。GetItems() メソッドが null を返すことを意味すると思います。

何か案は?それを大いに感謝します!

4

1 に答える 1

3

以下のコード スニペットを試してみてください。気になることがあれば教えてください。

ASPX

<telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="false" OnNeedDataSource="RadGrid1_NeedDataSource"
    OnItemDataBound="RadGrid1_ItemDataBound" 
    OnDetailTableDataBind="RadGrid1_DetailTableDataBind" 
    onprerender="RadGrid1_PreRender">
    <MasterTableView CommandItemDisplay="Top" DataKeyNames="ID">
        <Columns>
            <telerik:GridBoundColumn DataField="ID" UniqueName="ID" HeaderText="ID">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn DataField="Name" UniqueName="Name" HeaderText="Name">
            </telerik:GridBoundColumn>
            <telerik:GridEditCommandColumn>
            </telerik:GridEditCommandColumn>
        </Columns>
        <DetailTables>
            <telerik:GridTableView Name="Child">
                <NoRecordsTemplate>
                    <asp:Label ID="NoRecordLabel" runat="server" Text="whatever" />
                </NoRecordsTemplate>
                <Columns>
                    <telerik:GridBoundColumn DataField="ID" UniqueName="ID" HeaderText="ID">
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn DataField="Name" UniqueName="Name" HeaderText="Name">
                    </telerik:GridBoundColumn>
                </Columns>
            </telerik:GridTableView>
        </DetailTables>
    </MasterTableView>
</telerik:RadGrid>

ASPX.CS

protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
    dynamic data1 = new[] {
           new { ID = 1, Name ="Name_1",FileName = "jayesh.jpg"},
           new { ID = 2, Name = "Name_2",FileName = "jayesh.jpg"},
           new { ID = 3, Name = "Name_3",FileName = "jayesh.jpg"},
           new { ID = 4, Name = "Name_4",FileName = "jayesh.jpg"},
           new { ID = 5, Name = "Name_5",FileName = "jayesh.jpg"}
       };

    RadGrid1.DataSource = data1;
}

protected void RadGrid1_DetailTableDataBind(object sender, GridDetailTableDataBindEventArgs e)
{
    e.DetailTableView.DataSource = new Object[0];
}
protected void RadGrid1_PreRender(object sender, EventArgs e)
{
    foreach (GridDataItem item in RadGrid1.MasterTableView.Items)
    {
        if (item.HasChildItems && item.Expanded)
        {
            if (item.ChildItem.NestedTableViews[0].GetItems(GridItemType.NoRecordsItem).Count() > 0)
            {
                GridNoRecordsItem norecordItem = (GridNoRecordsItem)item.ChildItem.NestedTableViews[0].GetItems(GridItemType.NoRecordsItem)[0];
                Label NoRecordLabel = (Label)norecordItem.FindControl("NoRecordLabel");
                NoRecordLabel.Text = DateTime.Now.ToString();
            }
        }
    }
}
于 2013-09-11T11:00:48.120 に答える