0

我有一个包含一个字符串的类,该字符串用于存储多个值(考虑 xml 描述)和 [] 的覆盖以将值放入字符串并获取它。

  class Entity
{
    private String _Data;
    public String Data
    {
        get { return (String)_Data; }
        set { _Data=value;}
    }

    public Object this[String propertyname]
    {
        get
        {
            return GetPropertyValue(propertyname);
        }
        set
        {
            SetPropertyValue(propertyname,Value);       
        }
    }

    private String GetPropertyValue(String propname)
    {
        if (Data == null) return "";
        String fbalise = "<" + propname + ">";
        int indexstart = Data.IndexOf(fbalise);
        if (indexstart == -1)
            //throw new Exception("Cannot Get Value because balise for " + propname + " does not exist");
            return null;
        indexstart += fbalise.Length;
        String ebalise = "</" + propname + ">";
        int caraclength = Data.IndexOf(ebalise, indexstart) - indexstart;
        return Data.Substring(indexstart, caraclength);
    }

   private void SetPropertyValue(String propname, String valuetoinsert)
    {
        if (Data == null) Data = "";
        String fbalise = "<" + propname + ">";
        String ebalise = "</" + propname + ">";
        int indexstart = Data.IndexOf(fbalise);
        if (indexstart == -1)
        {
            indexstart = Data.Length;
            Data = Data + fbalise + ebalise;
        }

        indexstart += fbalise.Length;

        int caraclength = Data.IndexOf(ebalise, indexstart) - indexstart;
        String lastvalue = Data.Substring(indexstart, caraclength);
        if (lastvalue != valuetoinsert)
        {
            Data = Data.Remove(indexstart, caraclength);
            Data = Data.Insert(indexstart, valuetoinsert);
        }
    }
}

现在我有一个List<Entity>我想通过设置gridview的数据源绑定到gridview。

绑定后,它只将数据显示为包含我所有文本的列。(这很正常,我可以,这是正常规则)但是是否可以指定我的绑定,而不是研究属性,使用 [] 来获取数据并将其绑定到适当的列(例如,如果我有列“名称”,调用 entity[“Name”] 而不是 entity.Name,它不存在.....

4

3 回答 3

0

您本质上是在谈论列表列表。我所做的是嵌套数据绑定控件。第一个控件绑定到您的List<Entity>then in onOnItemDataBound事件拉出数据项,然后将其绑定到您的内部控件。

于 2012-08-30T15:22:33.580 回答
0

为什么不能添加Name属性?您可以使用现有的索引器作为支持字段:

public string Name
{
  get
  {
    return this["Name"];
  }
  set
  {
    this["Name"] = value;
  }
}
于 2012-08-30T15:21:14.090 回答
0

您可以通过实现使您的 Entity 类看起来像键值字符串对的集合IDictionary<string, string>

(这整个方法有点可疑,但我认为你有充分的理由,所以我不会进行讨论。)

于 2012-08-30T15:21:15.947 回答