找回密码
 会员注册
查看: 177|回复: 0

【ASP.NET】DataList控件之ItemTemplate模式(自定义模板)

[复制链接]

250

主题

1

回帖

819

积分

管理员

积分
819
发表于 2024-2-29 08:17:16 | 显示全部楼层 |阅读模式

一、DataList呈现效果图如下:

二、前端控件代码:

  1. <asp:DataList ID="DataList1" OnItemCommand="DataList1_ItemCommand" runat="server">
  2. <ItemTemplate>
  3. <table border="0" runat="server" style="width: 100%; height: 100%; margin-top: 0px; padding-top: 0px; font-size: 9pt;" align="center">
  4. <tr>
  5. <td align="left" style="border-bottom: 1px dashed #000000; width: 150px; height: 21px;">&nbsp;·&nbsp;『
  6. <%# DataBinder.Eval(Container.DataItem,"type") %>
  7. </td>
  8. <td style="border-bottom: 1px dashed #000000;" align="left">
  9. <asp:LinkButton ID="IbtnTitle" runat="server" CommandName="select">
  10. <%# DataBinder.Eval(Container.DataItem,"title") %>
  11. </asp:LinkButton>
  12. </td>
  13. </tr>
  14. </table>
  15. </ItemTemplate>
  16. </asp:DataList>
复制代码

其中,里的内容就是自定义模板的内容。

最关键的一步是绑定数据库表的数据字段,即  <%# DataBinder.Eval(Container.DataItem,"type") %> 和    <%# DataBinder.Eval(Container.DataItem,"title") %>

总结:   <%# DataBinder.Eval(Container.DataItem,"DataList的DataSource的某个字段名") %>,一般就是数据库表的字段名

三、后台相关代码:

  1. /// <summary>
  2. /// 连接数据库
  3. /// </summary>
  4. /// <returns>返回SqlConnection对象</returns>
  5. public SqlConnection GetConnection()
  6. {
  7. //获取数据库连接的字符串并赋值给myStr
  8. string myStr = ConfigurationManager.AppSettings["ConnectionString"].ToString();
  9. SqlConnection myConn = new SqlConnection(myStr);
  10. return myConn;
  11. }
  12. /// <summary>
  13. /// 说明:GetDataList 数据集,返回数据源的数据集
  14. /// </summary>
  15. /// <param name="sQueryString">SQL字符串</param>
  16. /// <param name="TableName">数据表名称</param>
  17. /// <returns>数据集DataSet</returns>
  18. public DataSet GetDataSet(string sQueryString, string TableName)
  19. {
  20. SqlConnection con = GetConnection();
  21. con.Open();
  22. //定义并初始化数据适配器
  23. SqlDataAdapter dbAdapter = new SqlDataAdapter(sQueryString, con);
  24. //定义一个数据集,用来赋值给应用程序的一个数据集
  25. DataSet dataset = new DataSet();
  26. //将数据适配器中的数据填充到数据集dataset中
  27. dbAdapter.Fill(dataset, TableName);
  28. con.Close();
  29. return dataset;
  30. }
  31. protected void Page_Load(object sender, EventArgs e)
  32. {
  33. DataSet ds = GetDataSet("select * from tb_News", "tb_News");
  34. this.DataList1.DataSource = ds;
  35. this.DataList1.DataKeyField = "id";
  36. this.DataList1.DataBind();
  37. }
复制代码

tb_News表中就有ID,Tyle, Title字段

而其中,超链接LinkButton的点击事件是DataList的OnItemCommand事件,会将点击的列表子项信息传递给该事件对应的方法!

注意:1、LinkButton的CommandName必须设置为"select"才会触发该事件。

           2、this.DataList1.DataKeyField = "id"  必须写上,不然下面获取不了主键ID

web.config中在中,添加:

     
       
 

注意:这是连接SQL SERVER的方法,不是MYSQL(别搞错了!) 

四、点击LinkButton(超链接)触发的事件方法如下:

  1. /// <summary>
  2. /// 点击超链接文字后事件,跳转showNews显示新闻详细信息
  3. /// </summary>
  4. protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
  5. {
  6. int id = Convert.ToInt32(DataList1.DataKeys[e.Item.ItemIndex].ToString());
  7. Response.Write("<script language=javascript>window.open(showNews.aspx?id=" + id +
  8. ",width=520,height=260</script>");
  9. }
复制代码

通过DataList1.DataKeys[e.Item.ItemIndex].ToString()来获取表的ID字段,而e就是所点击的那行信息体。

 


来源:https://blog.csdn.net/qq_39574690/article/details/83934476
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?会员注册

×
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-27 00:37 , Processed in 1.018914 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表