我有一个dataset现在要绑定到datalist上面  但是有的字段要经过处理才能绑定 (比如我要判断一个字段是否为空来绑定其他字段)   这种情况要怎么处理呢   如果dataset不好处理的话 还有没其他容器 可以很好的处理的 !

解决方案 »

  1.   

    <%#Eval("f1").ToString()==""?Eval("a").ToString():Eval("B").ToString()%>
      

  2.   

    1、对于单个字段的处理,可以在在服务器端定义保护(protected)的函数,例如:protected string AA(string str){...return str;},然后在字段绑定的时候调用这个函数就可以了 <%# AA(DataBinder.Eval(Container, "DataItem.asdf").ToString()) %>
    2、你的情况,可以在private void DataList1_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e) {...}事件中处理
      

  3.   

    我晕 楼上的真乃神级人物呀 !谢谢了 不过值解决了一个问题  还有个问题 比如显示行里的字段 超过一定的数量就是  还有截取以个字段的第一个字,  我在网上找答案就是 用
    onitemdatabound  和itemCreated  方法!
      

  4.   

    <%#GetStringByLenth(Eval("字段"),10)%>后台:
     protected  string GetStringByLenth(object o, int iLength,bool bUseTitle)
            {
                string str = o.ToString();
                if (str.Length <= iLength) return str;
                System.Text.StringBuilder sb = new System.Text.StringBuilder();
                if (bUseTitle)
                {
                    sb.Append("<span title=\"" + o.ToString() + "\">");
                }
                    string sChar = "";
                int iCurLength = 0;
                iLength *= 2;//按字节数。
                for (int i = 0; i < str.Length; i++)
                {
                    if (iCurLength >= iLength)
                    {
                        break;
                    }                sChar = str.Substring(i, 1);
                    sb.Append(sChar);                if (bIsChinese(sChar))
                    {
                        iCurLength += 2;
                    }
                    else
                    {
                        iCurLength += 1;
                    }
                }            sb.Append("...");
                if (bUseTitle)
                {
                    sb.Append("</span>");            }
                str = sb.ToString();
                sb = null;
                return str;
            }
      

  5.   

    真心的谢谢楼上的各位大哥 让我学到了不少东西! 要学的东西还真多呀! 鸣谢  Cpp2017  Nerchan  suyiming ! (排名不分先后!)
      

  6.   

    学习了,方法<%#Eval("f1").ToString()==""?Eval("a").ToString():Eval("B").ToString()%> 
    没有用过