请问.net datalist 模板列中的控件值如何在后台动态绑定?ItemDataBound方法中该如何写?
以往都是在控件databindings或页面中加上<%#DataBinder.Eval(Container,"字段名")%>,但是不够灵活,我想根据条件判断后绑定不同表的...
以往都是在控件databindings或页面中加上<%#DataBinder.Eval(Container, "字段名")%>,但是不够灵活,我想根据条件判断后绑定不同表的字段值,由于不同表字段名不同,那么如何在后台的事件中把模板列中控件所绑定的内容进行切换?
动态改变DATALIST绑定的字段值,比如<%#DataBinder.Eval(Container, "字段名")%>换成<%#DataBinder.Eval(Container, "字段名1")%> 展开
动态改变DATALIST绑定的字段值,比如<%#DataBinder.Eval(Container, "字段名")%>换成<%#DataBinder.Eval(Container, "字段名1")%> 展开
3个回答
展开全部
这个有两个解决办法:
1. 你分两次绑定,asp.net 的代码就要重复写一遍不是很划算。但是这样肯定可以,你在code behide里面根据条件设置可见和不可见即可
2. 如果多个表有关联的话,一次性把数据取出来,放在Dictionary<key, value>比如 key 就用DataSourceType 为‘A表数据’ 或者'B表数据',value就用一个List<>,相当于一个复杂类型了。
等等,你还可以加入c表,d表
前台绑定的时候用if else判断DataSourceType来绑定不同的值。
这个就是思路,如果有什么不懂的再来问我 ,这个最好写一个存储过程来取数据比较好。如果涉及的表比较多。
1. 你分两次绑定,asp.net 的代码就要重复写一遍不是很划算。但是这样肯定可以,你在code behide里面根据条件设置可见和不可见即可
2. 如果多个表有关联的话,一次性把数据取出来,放在Dictionary<key, value>比如 key 就用DataSourceType 为‘A表数据’ 或者'B表数据',value就用一个List<>,相当于一个复杂类型了。
等等,你还可以加入c表,d表
前台绑定的时候用if else判断DataSourceType来绑定不同的值。
这个就是思路,如果有什么不懂的再来问我 ,这个最好写一个存储过程来取数据比较好。如果涉及的表比较多。
追问
嗯,方法比较好,但是我在现有成型的基础上修改的话,还是比较繁琐,有什么好方法能直接在事件中对前台绑定的值进行切换?就是将切换成,用ItemDataBound的话如何实现呢?
追答
那你就用if else来判断吧,根据不同的条件来绑定数据,只能这样了
展开全部
datalist有一个onitemdatabound事件, 例如:
在datalist中有一个控件<asp:Literal ID="litCompany" runat="server"></asp:Literal>
服务器方法找到控件
FundsResult fundsResult = (FundsResult)e.Item.DataItem;//当前对象
Literal litCompany = (Literal)e.Item.FindControl("litCompany");
判断你自己写
litCompany.Text =。。。。。。
在datalist中有一个控件<asp:Literal ID="litCompany" runat="server"></asp:Literal>
服务器方法找到控件
FundsResult fundsResult = (FundsResult)e.Item.DataItem;//当前对象
Literal litCompany = (Literal)e.Item.FindControl("litCompany");
判断你自己写
litCompany.Text =。。。。。。
更多追问追答
追问
最关键的就是litCompany.Text =。。。该如何往下写?
我这样尝试过:((Label)(e.Item.FindControl("LB_listitem"))).Text = (DataBinder.Eval(e.Item.DataItem, "news_title")).ToString().Length > 18 ? (DataBinder.Eval(e.Item.DataItem, "news_title")).ToString().Substring(0, 18) + "..." : (DataBinder.Eval(e.Item.DataItem, "news_title")).ToString(); 但是不对。
追答
你是要根据长度来判断显示把
你写一个方法
protected string GetNews_Title(string news_titiel){
if(news_title.length>18){
return news_title.substring(0,18)+"...";
}else{
return news_title;
}
}
页面上九这样用
就不用那个事件了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sql语句中的 as
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询