特向高手请教一个NET邦定问题,现有SQL字段PET保存值为"1"存于SQL,此值对应JS数组"鼠",(注:arr.js定义了数组["1.鼠","2.牛","3.虎","4.兔"......])现select [pet] from 表1取出值1,希望转换为鼠再在前台DATALIST邦定。
如何实现,感激中。 

解决方案 »

  1.   

    那你后台也定义一下 1.鼠","2.牛","3.虎","4.兔"...... 绑定时,用switch转换下。
      

  2.   

    谢谢你,因为我的arr.js,里面有近100个数组,分别存放不同的value和对应的文本,如果每次都再在后台这么定义不太现实。希望有更好的方法
      

  3.   

    绑定的时候,内容处绑个js方法替换。
    <head runat="server">
        <title></title>
        <script language="javascript">
            function getValue(id) {
                var list = ["1.鼠", "2.牛", "3.虎", "4.兔"];
                var reg = new RegExp(id + '.([^.]+)');
                for (var i = 0; i < list.length; i++) {
                    var result = reg.exec(list[i]);
                    if (result != null) {
                        return result[1];
                    }
                }
                return "";
            }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:DataList ID="DataList1" runat="server" BorderWidth="1px" >
               <HeaderTemplate>
                My Column
                </HeaderTemplate>
                <ItemTemplate>
                 <script language="javascript">
                   document.write(getValue('<%#Eval("Id")%>'));
                 </script>
                </ItemTemplate>
            </asp:DataList>
        </div>
        </form>
    </body>
      

  4.   

    select case pet  when '1' then '鼠' when '2' then '牛' when '3' then '虎' when '3' then '兔' ELSE '其他' END from 表
      

  5.   

    在sql读取的时候转换就用 case when,如果在绑定的时候转换可以用,<%#Eval("PET").ToString()=="1"?"鼠":""%><%#Eval("PET").ToString()=="2"?"牛":""%>依次
    对于多的判断不太适合
    3 在cs代码文件里写个pubilc方法,在页面上调用 <%#GetName(Eval("PET").ToString())%>
    pulic string GetName(string pet)//方法名自己随便起,页面上调用这个名字就可以
    { string strtemp="";
    switch (pet)
    {
        case "1": 
            strtemp="鼠";
            break;
        case "2":
            strtemp="牛";
            break;
        case "3":
            strtemp="虎";         break;
         case "4":
            strtemp="兔";
             break;
        default:
          strtemp="";
            break;
    }
    return strtemp;
    }
     
      

  6.   

    经过4楼fangxinggood的启发,重编了一个JS方法解决了此问题,在此我代表CSDN感谢象fangxinggood一样的热心人。
                    <asp:DataList ID="DataList2" runat="server">
                    <ItemTemplate>
                    <script>readSQL(PET,'<%#Eval("PET")%>')</script>
                    </ItemTemplate>
                    </asp:DataList>    readSQL = function(PET, realval) {//通过SQL中的val取得text--单数组
            if (PET) {//判断此值是否有邦定进来,如果为空则输出“未填写”;
                for (var i = 0; i < PET.length; i++) {
                    var vv = PET[i].split(',');
                    if (vv[0] == realval) { document.write(vv[1]); break; }
                }
            }
            else { document.write("未填写"); }
        }