我做datalist的嵌套,外层为main_dl,内层为x_dl,想让内层的newsid根据外层的root选择显示,
可是在前台写好html后一点击回到后台就被提示<%#  值   %> 无效!
还请各位前辈帮我看看!谢谢!谢谢前台:
<asp:datalist id=main_dl  runat="server"DataSource="<%# main_DS %>">
    <ItemTemplate>
       
       <%# DataBinder.Eval(Container.DataItem,"root") %>
       
       <asp:datalist id=x_dl runat="server"DataSource="<%# FilterData(DataBinder.Eval  (Container.DataItem,"root").tostrig ()) %>">
           <ItemTemplate>
             <%# DataBinder.Eval(Container.DataItem,"newsid") %>
           </ItemTemplate>
       </asp:datalist>
    
   </ItemTemplate>
</asp:datalist>后台:——————————————————————————vb.net版Function FilterData(ByVal v As String) As DataView
         da_z.Fill(DS_z, "news")  'da_z的select已经在Page_Load中完成
         Dim dv As DataView = New DataView(DS_z.Tables("news"))
         dv.RowFilter = "root = " + v
         x_dl.DataBind()        
         Return dv
End Functionc#版
DataView FilterData(string v) 

 da_z.Fill(DS_z, "news"); // DS_z的select已经在Page_Load中完成
 DataView dv = new DataView(DS_z.Tables("news")); 
 dv.RowFilter = "Title = " + v; 
 x_dl.DataBind(); 
 return dv; 
}
外层main_dl的main_ds也已经在Page_Load中完成了绑定

解决方案 »

  1.   

    DataSource='<%# FilterData(DataBinder.Eval  (Container.DataItem,"root").tostrig ()) %>'>用'
      

  2.   

    <asp:datalist id=x_dl runat="server"DataSource="<%# FilterData(DataBinder.Eval  (Container.DataItem,"root").tostrig ()) %>">提示<%#  值   %> 无效!
    我知道,正在用这个。是你写错单引号和双引号了。应该这样写:
       <asp:datalist id=x_dl runat="server" DataSource='<%# FilterData(DataBinder.Eval  (Container.DataItem,"root").tostrig ()) %>'>看清楚没。是单引号里面可以括双引号。 曾经也被困扰过。^^
      

  3.   

    啊!!!!原来如此!!!!呵呵,谢谢前辈!----------------------------------------------------不过现在又有个问题,运行提示
    <%# FD(DataBinder.Eval(Container.DataItem,"Title").tostrig ())%
    未找到类型“String”的公共成员“tostrig”不加.tostrig 又没能显示数据,还请前辈帮我看看是不是还有那里可能出错!谢谢前辈
      

  4.   

    我发现了,如果除掉  .string的话, 是内层循环的 x_dl.DataBind() 出错,提示:没有定义x_dl,
    可是我在前台明明已经加入了啊! <asp:datalist id=x_dl runat="server"DataSource='<%# FilterData(DataBinder.Eval  (Container.DataItem,"root").tostrig ()) %>'>
      

  5.   

    DataList ds=(main_dl.FindControl("x_dl") as DataList)
    ds.DataBind(); 
      

  6.   


    Function FilterData(ByVal v As String) As DataView
        
    改成
    Function FilterData(ByVal v As object) As DataView
      

  7.   

    你这里应该用在ItemDataBound事件中
    private void main_dl_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
    {
                       DataList ds=(e.Item.FindControl("x_dl") as DataList)
    ds.DataBind(); 
    }
     
      

  8.   

    前辈,还是不能显示数据,
    我是用下面这个函数给x_dl的DataSource赋值:DataView FilterData(string v) 

     da_z.Fill(DS_z, "news"); // DS_z的select已经在Page_Load中完成
     DataView dv = new DataView(DS_z.Tables("news")); 
     dv.RowFilter = "Title = " + v; 
     return dv; 
    }
    而用这个绑定数据时,是不是因为DataSource还没被赋值,所以没能显示呢?
    private void main_dl_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
    {
                       DataList ds=(e.Item.FindControl("x_dl") as DataList)
    ds.DataBind(); 
                      }
    还是我的函数出了问题,谢谢
      

  9.   

    aspx:
     <asp:datalist id=x_dl runat="server">
    cs:private void main_dl_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
    {
                       DataList ds=(e.Item.FindControl("x_dl") as DataList)
                       ds.DataSource= FilterData(DataBinder.Eval  (Container.DataItem,"root").ToString()) 
    ds.DataBind(); 
                      }
      

  10.   

    FilterData(DataBinder.Eval  (Container.DataItem,"root").ToString()) 处被提示出错:Container未申明谢谢前辈,实在是新手,麻烦您啦
      

  11.   

    FilterData(DataBinder.Eval  (Container.DataItem,"root").ToString()) 处被提示出错:Container未申明谢谢前辈,实在是新手,麻烦您啦
      

  12.   

    *.aspx文件需要引用
    System.Data;
      

  13.   

    总结一下问题:前台:<asp:datalist id=main_dl  runat="server"DataSource="<%# main_DS %>">
        <ItemTemplate>
           
           <%# DataBinder.Eval(Container.DataItem,"root") %>
           
           <asp:datalist id=x_dl runat="server">
               <ItemTemplate>
                 <%# DataBinder.Eval(Container.DataItem,"newsid") %>
               </ItemTemplate>
           </asp:datalist>
        
       </ItemTemplate>
    </asp:datalist>后台:
    DataView FilterData(string v) 

     da_z.Fill(DS_z, "news"); // DS_z的select已经在Page_Load中完成
     DataView dv = new DataView(DS_z.Tables("news")); 
     dv.RowFilter = "Title = " + v; 
     return dv; 
    }
    private void main_dl_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
    {
                       DataList ds=(e.Item.FindControl("x_dl") as DataList)
                       ds.DataSource= FilterData(DataBinder.Eval  (Container.DataItem,"root").ToString()) 
    ds.DataBind(); 
                      }
    出错的地方:ds.DataSource= FilterData(DataBinder.Eval  (Container.DataItem,"root").ToString()) 
    处提示
    :Container未声明谢谢前辈们指点
      

  14.   

    ds.DataSource= FilterData(DataBinder.Eval  (Container.DataItem,"root").ToString()) 
    处提示
    :Container未声明
    ds.DataSource= FilterData(DataBinder.Eval  (Container.DataItem,"root").ToString()) 换成
    ds.DataSource= FilterData(DataBinder.Eval  (e.item.DataItem,"root").ToString())