0

グリッドビューに画像を表示しようとしていますが、グリッドビューに表示されている列はすべて動的に表示されます(生成されません)。

私はすでにこの投稿を見てきましたが、私の場合はうまくいかないようです: GridView の ItemTemplate 内に配置された Image Control の ImageUrl プロパティにアクセスする方法

私が持っているのは、これらの列を持つグリッドビューです:

    <Columns> 
        <telerik:GridBoundColumn  HeaderText="Custom1"   HeaderStyle-VerticalAlign="Bottom" DataField="Custom1" SortExpression="Custom1"/>
        <telerik:GridDateTimeColumn HeaderText="Custom2"   HeaderStyle-VerticalAlign="Bottom" DataField="Custom2" SortExpression="Custom2"/>
        <telerik:GridCheckBoxColumn  HeaderText="Custom3"   HeaderStyle-VerticalAlign="Bottom" DataField="Custom3" SortExpression="Custom3"/>
        <telerik:GridTemplateColumn HeaderText="Custom4" HeaderStyle-VerticalAlign="Bottom" DataField="Custom4"><itemtemplate><asp:Image runat="server" ID="Custom4_pic"/></itemtemplate></telerik:GridTemplateColumn>

48 に達するまで Custom# 値を変更して 4 つの列が繰り返されます。

次に、不要な列をすべて非表示にし、必要な列のみを表示します (これは、表示する列の順序をユーザーが定義できるためです。すべてをハードコーディングすることが、すばやく実装できる最も簡単な方法でした)。

すべてが正しく表示されますが、画像コントロールの ImageURL を設定する方法がわかりません。残りの列については、これが私がやっている方法です。

dt = new DataTable();
// Do some stuff...
if (aProperty.WebControlType == EntityPropertyWebControlType.CheckboxYN || aProperty.WebControlType == EntityPropertyWebControlType.OptionYN)
{
    dt.Columns.Add("Custom" + ((i * 4) - 1).ToString(), typeof(bool));
    break;
}
else if (aProperty.WebControlType == EntityPropertyWebControlType.Date)
{
    dt.Columns.Add("Custom" + ((i * 4) - 2).ToString(), typeof(DateTime));
    break;
}
else if (aProperty.WebControlType == EntityPropertyWebControlType.Image)
{
    // Not sure what to do here...
    break;
}
else
{
    dt.Columns.Add("Custom" + ((i*4) - 3).ToString(), typeof(string));
    break;
}

// Do more stuff...

// Based on type I will set the values to equal something.. so for example
dr["Custom" + aProperty.LabelColumnNo.ToString()] = "Text" or bool or DateTime
// However I'm not sure what to do for Image...

// and then I return the datatable to be binded to the gridview

どんなヒントも素晴らしいでしょう、ありがとう!

4

1 に答える 1

0

問題を解決しました。

テンプレートの列を GridImageColumns に置き換え、コード ビハインドで文字列型のデータ テーブルに列を追加し、画像ハンドラーを使用して、文字列を画像ハンドラー ページに設定しました。

于 2012-06-14T18:03:29.637 に答える