2

まず最初に:ここですでに漠然と似たような要求がいくつかあることを知っていますが、私の問題を完全に解決するものはありません。私は解決策をまとめようとしています。

とにかく、RESTfulAPIから情報を取得するためのWebインターフェイスを作成しています。次のようなグリッドビューを介して表示するデータテーブルを生成しています。

DataTable table = new DataTable();
table.Columns.Add("entry name");
table.Columns.Add("col1");
table.Columns.Add("col2");
table.Columns.Add("etc");

foreach(string name in GetNames())
{
    DataRow row = table.NewRow();
    row["name"] = name;
    row["col1"] = SomeMethod(name);
    row["col2"] = SomeOtherMethod(name);
    row["etc"] = YouGetTheIdea(name);
    table.Rows.Add(row);
}

GridView1.DataSource = table;
GridView1.DataBind();

これまでのところ元気です。私が本当に望んでいるのは、「名前」列をハイパーリンクにして、名前をパラメーターとしてメソッドを呼び出すようにすることです。または、URLの一部として名前を使用して、次のようにWebサイトにリンクします。

"<a href:'www.example.com/" + name + ".csv'>" + name + "</a>"

私の人生では、これらのことを自分が望むほど動的に行う方法を理解することはできません。あなたの助けをいただければ幸いです。ありがとう。

4

1 に答える 1

0

1 つの解決策は、列の値を URL にしてから、バインドされた列に対してHtmlEncode = false. これは、あなたがのforeachようなことをすることを意味しますrow['link'] = "<a href='..'>..</a>"。これがバインドされると、HTML として出力されます。

または、グリッドビューの OnRowDataBound イベントにフックして、コード ビハインドで値を操作することもできます。

または、最後に、適切にバインドする ItemTemplate 列を作成できます。

<asp:TemplateField HeaderText="Seniority">
    <ItemTemplate>
        <a href='example.com/<%# Eval("name")) %>'><%# Eval("name")) %></a>
    </ItemTemplate>
</asp:TemplateField>
于 2012-08-01T14:46:43.403 に答える