3

gvデータセット()にバインドされたGridView( )がありますds。名前付きColumns[1]のフィールドにバインドされています; 日付フィールドです。 dsorderFilenameColumns[6]

nullの場合、テキストとして表示しColumns[6]たい。nullでないColumns[1]場合は、URL +を使用してハイパーリンクとして表示します。Columns[6]Columns[1]~/directory/orderFilename

Webでいくつかの可能な解決策を見つけましたが、私が望むことを実行できるものはないようです。どんな助けでもいただければ幸いです。

4

3 に答える 3

4

BoundFieldsカスタマイズを行うために、次の人は常にテンプレートフィールドに変換するように見える必要があるため、特に避けたいと思います。私は次のことをお勧めします:

Literal列1のコントロールでテンプレートフィールドを使用します。

<asp:TemplateField HeaderText="File">
    <ItemTemplate>
        <asp:Literal ID="ltFilename" runat="server" 
            OnDataBinding="ltFilename_DataBinding" />
   </ItemTemplate>
</asp:TemplateField>

OnDataBinding次に、列コントロールのを実装します。

protected void ltFilename_DataBinding(object sender, System.EventArgs e)
{
    Literal lt = (Literal)(sender);
    if (Eval("yourColumn6Field") == DBNull.Value)
    {
        // just show a text filename
        lt.Text = Eval("orderFilename").ToString();
    }
    else
    {
        // produce the link
        lt.Text = string.Format("<a href='{0}'>{1}</a>",
             ResolveUrl("~/directory/" + Eval("orderFilename").ToString()),
             Eval("orderFilename").ToString());
    }
}

これの利点は、ロジックをコントロールに直接ローカライズできることです。グリッドの他の部分に誤って影響を与えることなく、簡単に交換して変更できます。

于 2011-08-19T17:11:14.693 に答える
1

にハイパーリンク コントロールを追加したとします。が null でないcolumn[1]場合は、プロパティを設定して URL を設定できます。この場合、ハイパーリンクのように見えます。 の場合は、テキストのように動作するため、URL を設定する必要はありません。column[6]NavigateURLcolumn[6] is null

于 2011-08-19T16:52:02.213 に答える
0

テンプレート列を使用し、その中に 2 つのパネルを配置します。1 つのパネルにはリンクが含まれ、もう 1 つのパネルにはテキストが含まれます。次のようなことを試してください:

<asp:TemplateField>
    <ItemTemplate>
        <asp:Panel ID="pnlLink" runat="server" Visible='<%#Eval("SomeColumn") != null%>'>
             <asp:HyperLink ... ></asp:HyperLink>
        </asp:Panel>
        <asp:Panel ID="pnlLink" runat="server" Visible='<%#Eval("SomeColumn") = null%>'>
             <%#Eval("SomeColumn")%>
        </asp:Panel>
    </ItemTemplate>
</asp:TemplateField>

@Muhammad Akhtarが提案したように、もう1つのオプションは、関係なくハイパーリンクを使用し、Column [6]のDataFieldがnullでない場合にのみURLを設定することです。

于 2011-08-19T16:56:44.577 に答える