8

リストビューに入力する結果に列が存在するかどうかを確認するにはどうすればよいですか? リストビューは、ストアド プロシージャから取り込まれます。

これは私が試したものですが、成功しませんでした:

<%#  Container.DataItem.GetType().GetProperty("Phone")==null?"phone is null":"we have phone property" #>

または、Container.DataItemの代わりにeを使用する必要がありますか?

4

3 に答える 3

15

まず、コードビハインドが複雑になった場合に使用します (私はほとんど常に使用しています)。ここでは、すべてのアイテムに対してトリガーされるListView のItemDataBoundイベントを使用します。

protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e)
{
    if (e.Item.ItemType == ListViewItemType.DataItem)
    {
        // assuming you have an ItemTemplate with a label where you want to show this
        Label lblInfo = (Label) e.Item.FindControl("LblInfo");
        DataRowView rowView = (DataRowView)e.Item.DataItem;
        if (rowView.Row.Table.Columns.Contains("Phone"))
        {
            lblInfo.Text = "we have the phone property";
        }
        else
        {
            lblInfo.Text = "no phone available";
        }
    }
}

これにより、コードがはるかに読みやすく、保守しやすく、デバッグしやすく、タイプ セーフになります。

于 2013-10-08T12:34:14.193 に答える
0

また、解決策を見つけました:

    public bool CheckProperty(string property_name)
    {

        try
        {
            Eval(property_name);
        }
        catch { return false; }
        return true;

    }
于 2013-10-08T13:51:03.970 に答える