3

Razor および Telerik Grid コントロールを使用して、C# で MVC-3 デザイン パターンを使用しています。製品のリリースを妨げる小さな問題が 1 つあります。

標準のテレリック スタイルを使用しているだけなので、カスタム CSS はありません。ただし、予想どおり、すべてが非常に見栄えがよくなります... 水平方向に右にスクロールします。

スクロールする前に: ここに画像の説明を入力

スクロール後: ここに画像の説明を入力

Telerik コントロール自体は、実際には水平スクロールをサポートしていないように見えるため、その周りに div タグをポップし、その上にスクロール バーを設定しました。Telerik ウィンドウ コントロールを使用しても、同じことが起こります。Telerik は垂直スクロールをサポートしており、.Scrollable() を設定するとアクティブになります。.Scrollable("Horizo​​ntal") などのように言う方法はありますか。

私の推測では、ヘッダーとフッターがすべての列を含むように拡張されていないことに関係しているようです。私がそれを修正できる方法はありますか?私は最後の日かそこらでテレリック スタイル シートと JQuery を掘り下げてみましたが、役に立ちませんでした。

ご協力いただきありがとうございます。

編集1:以下の回答の1つが指摘したように、すべての列に .Width(xxx) を追加する必要があり、機能します。私は前にこれをしましたが、うまくいきませんでした。今まで言わなかったことをお詫びします。

編集 2: 要求されたコード:

<div id="ListContent">
    @{
        Html.Telerik()
            .Grid<YeatsClinical.PatientPortal.Web.ViewModels.PatientEducation>("PatientEducations")
            .Name("grid")
            .DataKeys(k => k.Add(o => o.MrPatientEducationId))

            .Columns(c =>
                {
                    c.Bound(o => o.MrPatientEducationId).ReadOnly().Width(100);
                    c.Command(s =>
                    {
                        s.Select();
                    }).Width(100);
                    c.Bound(o => o.PatientId).Visible(false).Width(100);
                    c.Bound(o => o.MrPatientEncounterId).Visible(false).Width(100);
                    c.Bound(o => o.MrPatientEducationResourceId).Visible(false).Width(100);
                    c.Bound(o => o.GivenAsPrint).Width(100);
                    c.Bound(o => o.DatePrinted).Width(100);
                    c.Bound(o => o.SentViaEmail).Width(100);
                    c.Bound(o => o.DocumentTitle).Width(100);
                    // image is temporary disabled because its causing huge lag spikes and very long database retrievals
                    c.Bound(o => o.File).Visible(false).Width(100);
                    c.Bound(o => o.DateCreated).Width(100);
                    c.Bound(o => o.CreatedByUserId).Visible(false).Width(100);
                    c.Bound(o => o.DateLastUpdated).Width(100);
                    c.Bound(o => o.LastUpdatedByUserId).Visible(false).Width(100);
                })
            .Pageable()
            .Sortable()
            .Filterable()
            .Groupable()
            .Render();
    }
</div>

上記の外側の div は、青いスクロールバーでスタイル設定されたものです。

4

3 に答える 3

3

まず、質問に対する部分的な回答を見つけるのを手伝ってくれた Jeff と Pollirrata の両方に感謝します。しかし、もう少し調査した結果、別の場所で答えを見つけました。しかし、同じ問題を抱えている可能性のある他の人のために、ここにリンクを投稿することにしました。

pollirrata が指摘したようにテレリックのマニュアルを読むと、すべての列に .Width を追加し(ステップ 1)、 Scrollable() を追加する(ステップ 2)必要があります。私は以前にこれを行っていましたが、以下に説明する理由のために機能しませんでしたが、これを行う必要があるため、有益な回答のために pollirata に +1 しました。

コメントで同様に提案することで助けを提供してくれたジェフにも感謝します.Pageableを取り除いたので答えを+1することはできませんが、違いはありませんでした。 . ただし、残念ながらコメントを +1 することはできますが、彼のコメントは正しかったのですが、彼から提供された回答は正しくありません)。

投稿を開始してから、このリンクに出会い、使用していた jQuery のバージョンが 1.5 で、Telerik には V1.7.1 が必要であることに気付きました。その後、バージョンを更新しましたが、これは問題の解決に部分的に役立ちました(ステップ 3)。また、リンクが参照している他の依存関係を確認して再確認し、それらすべてが必要に応じて存在するようにしました。ただし、サブ依存関係の 1 つが欠落していることに気付きました。私の場合、グリッドには DatePicker が必要でしたが、DatePicker には Calender が必要でした (誤って削除したに違いありません) (Step 4)。また、2 番目のリンクで参照されているように、プロジェクト全体で .Compressed() および .Combined() メソッドを使用するための正しい参照があることを確認しました。この最終ステップの後、すべてがうまくいきました(ステップ5)

これに関するあなたの助けと指導に感謝します。

于 2012-07-06T19:10:23.187 に答える
1

TelerikMVCグリッドは水平スクロールをサポートしています。すべての列の幅を設定して、を追加するだけです。Scrollable()グリッドにそしてそれはそれです

于 2012-07-06T16:08:05.607 に答える
0

次のテクニックを使用してください

<div class="DataGridXScroll">
    @(Html.Telerik().Grid(Model)
    .Name("grvSalesSummary")
    .DataKeys(keys => keys.Add(k => k.Unit_Code))
    .Columns(column =>
    {
        column.Bound(s => s.Zone_Name).Width(100).HtmlAttributes(new { @class = "GridColumnLeftAlign" }).Hidden(true)
            .GroupHeaderTemplate(@<text>Zone: @item.Key</text>);
        column.Bound(s => s.Region_Name).Width(100).HtmlAttributes(new { @class = "GridColumnLeftAlign" }).Hidden(true)
            .GroupHeaderTemplate(@<text>Region: @item.Key</text>);
        column.Bound(s => s.Unit_Code).Width(100).HtmlAttributes(new { @class = "GridColumnLeftAlign" });
        column.Bound(s => s.Unit_Name).Width(150).HtmlAttributes(new { @class = "GridColumnLeftAlign" });

        column.Bound(s => s.TotalCustomer).Width(70).HtmlAttributes(new { @class = "GridColumnRightAlign" })
             .Aggregate(aggreages => aggreages.Sum())
                .Format("{0:N}")
                .FooterTemplate(@<text> @item.Sum.Format("{0:N}") </text>)
                .GroupFooterTemplate(@<text>@item.Sum.Format("{0:N}")</text>);

        column.Bound(s => s.TotalActiveCustomer).Width(70).HtmlAttributes(new { @class = "GridColumnRightAlign" })
             .Aggregate(aggreages => aggreages.Sum())
                .Format("{0:N}")
                .FooterTemplate(@<text> @item.Sum.Format("{0:N}") </text>)
                .GroupFooterTemplate(@<text>@item.Sum.Format("{0:N}")</text>);

        column.Bound(s => s.NoOfSalesInCurrentMonth).Width(70).HtmlAttributes(new { @class = "GridColumnRightAlign" })
             .Aggregate(aggreages => aggreages.Sum())
                .Format("{0:N}")
                .FooterTemplate(@<text> @item.Sum.Format("{0:N}") </text>)
                .GroupFooterTemplate(@<text>@item.Sum.Format("{0:N}")</text>);

        column.Bound(s => s.TotalRecoveredWithoutDP).Width(100).HtmlAttributes(new { @class = "GridColumnRightAlign" })
             .Aggregate(aggreages => aggreages.Sum())
                .Format("{0:N}")
                .FooterTemplate(@<text> @item.Sum.Format("{0:N}") </text>)
                .GroupFooterTemplate(@<text>@item.Sum.Format("{0:N}")</text>);

        column.Bound(s => s.CollectionInCurrentMonth).Width(100).HtmlAttributes(new { @class = "GridColumnRightAlign" })
             .Aggregate(aggreages => aggreages.Sum())
                .Format("{0:N}")
                .FooterTemplate(@<text> @item.Sum.Format("{0:N}") </text>)
                .GroupFooterTemplate(@<text>@item.Sum.Format("{0:N}")</text>);

        column.Bound(s => s.TotalOverdue).Width(70).HtmlAttributes(new { @class = "GridColumnRightAlign" })
             .Aggregate(aggreages => aggreages.Sum())
                .Format("{0:N}")
                .FooterTemplate(@<text> @item.Sum.Format("{0:N}") </text>)
                .GroupFooterTemplate(@<text>@item.Sum.Format("{0:N}")</text>);

        column.Bound(s => s.TotalAdvance).Width(70).HtmlAttributes(new { @class = "GridColumnRightAlign" }) .Aggregate(aggreages => aggreages.Sum())
                .Format("{0:N}")
                .FooterTemplate(@<text> @item.Sum.Format("{0:N}") </text>)
                .GroupFooterTemplate(@<text>@item.Sum.Format("{0:N}")</text>);

        column.Bound(s => s.TotalOutstanding).Width(80).HtmlAttributes(new { @class = "GridColumnRightAlign" })
             .Aggregate(aggreages => aggreages.Sum())
                .Format("{0:N}")
                .FooterTemplate(@<text> @item.Sum.Format("{0:N}") </text>)
                .GroupFooterTemplate(@<text>@item.Sum.Format("{0:N}")</text>);

        column.Template(@<a href="http://172.25.40.50/MonthlyEntrySales/SalesReports.aspx?lc=@item.Unit_Code" target="_blank">Show</a>).Width(50);

        column.Bound(s => s.FinalizedByRM).Format("{0:dd-MMM-yyyy}").Width(90).HtmlAttributes(new { @class = "GridColumnLeftAlign" });
        column.Bound(s => s.FinalizedByZM).Format("{0:dd-MMM-yyyy}").Width(90).HtmlAttributes(new { @class = "GridColumnLeftAlign" });
        column.Bound(s => s.FinalizedByHO).Format("{0:dd-MMM-yyyy}").Width(90).HtmlAttributes(new { @class = "GridColumnLeftAlign" });

        column.Template(@<a href="#" onclick="return SaveSalesStatus('@item.Unit_Code','@item.FinalizedByRM','@item.FinalizedByZM','@item.FinalizedByHO');">Save</a>).Width(50);
    })
    .Selectable()
    .Scrollable(scroll => scroll.Height(300))
    .Groupable(settings => settings.Groups(group =>
    {
        group.Add(g => g.Zone_Name);
        group.Add(g => g.Region_Name);

    }).Visible(false))
    )
</div>

次の CSS を追加します。

.DataGridXScroll
{
    width: 1000px;
    overflow-x: scroll;
    text-align: left;
}
于 2012-07-31T05:21:50.760 に答える