datalist中的ItemDataBound无法取值?
前台嵌套两个datalist,如下:
<asp:datalist id="Datalist1" Runat="server" Width="720px">
<ItemTemplate>
<asp:Label ID="classid" visible=False Runat="server" text='<%#DataBinder.Eval(Container,"DataItem.id")%>'>
'建立一个不可见label用来取得父datalist的BoardClassid
</asp:Label>
<table width="99%" border="0">
<tr>
<td colspan="6" class="title">
<%#DataBinder.Eval(Container,"DataItem.context")%>
</td>
</tr>
<asp:DataList ID="Datalist2" Runat="server">
<ItemTemplate>
<tr>
<td width="2%" height="20"></td>
<td width="53%" height="20"><%#DataBinder.Eval(Container,"DataItem.title")%></td>
</tr>
</ItemTemplate>
</asp:DataList>
</table>
</ItemTemplate>
</asp:datalist>
我要在后台,当第一个datalist的databound时,第二个datalist取label的值,绑定数据.
后台代码如下:
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!IsPostBack)
{
con.open();
string access = "SELECT id ,Context FROM tbTree where id>40";
SqlDataAdapter d_sqlDataAdapter = new SqlDataAdapter(access,con.myConnection);
DataSet d_dsEmployees = new DataSet();
d_sqlDataAdapter.Fill(d_dsEmployees,"areaname");
Datalist1.DataSource = d_dsEmployees;
Datalist1.DataBind();
}
}
private void Datalist1_ItemDataBound( object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
{
int ClassID=Convert.ToInt32((Label)e.Item .FindControl("classid"));
//利用FindControl用label获得BoardID的值,并附到变量ClassID
string access = "SELECT * FROM news where typeid= " + ClassID;
SqlDataAdapter d_sqlDataAdapter = new SqlDataAdapter(access,con.myConnection);
DataSet ADS = new DataSet();
d_sqlDataAdapter.Fill(ADS,"areaname");
DataList ClassID2=(DataList)e.Item.FindControl("datalist2");
//利用FindControl将第二个datalist板定
ClassID2.DataSource = ADS;
ClassID2.DataBind();
}
不起作用.哪位帮忙看看
问题点数:80、回复次数:4Top
1 楼neting(.net学习中)回复于 2005-04-03 19:05:27 得分 0
顶Top
2 楼hackate(兰花开香入梦境,独思佳人亦飘然!!)回复于 2005-04-03 19:25:57 得分 80
leo_boy不行吗/之前不是可以吗?我给你看看我的
以下是.aspx代码
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="index.aspx.vb" Inherits="WebApplication8.index"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>index</title>
<style type="text/css">TD {
FONT-SIZE: 9pt; LINE-HEIGHT: 150%
}
BODY {
SCROLLBAR-FACE-COLOR: #eeeeee; FONT-SIZE: 12px; SCROLLBAR-HIGHLIGHT-COLOR: #ffffff; SCROLLBAR-SHADOW-COLOR: #dee3e7; SCROLLBAR-3DLIGHT-COLOR: #d1d7dc; SCROLLBAR-ARROW-COLOR: #006699; SCROLLBAR-TRACK-COLOR: #ededed; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif, 宋体; SCROLLBAR-DARKSHADOW-COLOR: #98aab1
}
A:link {
FONT-SIZE: 9pt; COLOR: #363636; LINE-HEIGHT: 18px; TEXT-DECORATION: none
}
A:visited {
FONT-SIZE: 9pt; COLOR: #363636; LINE-HEIGHT: 18px; TEXT-DECORATION: none
}
A:hover {
COLOR: #cc0000; LINE-HEIGHT: 18px; TEXT-DECORATION: underline
}
INPUT {
BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 9pt; BORDER-LEFT-COLOR: #d2d2d2; BORDER-BOTTOM-WIDTH: 1px; BORDER-BOTTOM-COLOR: #d2d2d2; BORDER-TOP-COLOR: #d2d2d2; LINE-HEIGHT: 120%; FONT-FAMILY: "tahoma", "arial", "helvetica", "sans-serif", "宋体"; BACKGROUND-COLOR: #f9f9f9; BORDER-RIGHT-WIDTH: 1px; BORDER-RIGHT-COLOR: #d2d2d2
}
SELECT {
BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 9pt; BORDER-LEFT-COLOR: #d2d2d2; BORDER-BOTTOM-WIDTH: 1px; BORDER-BOTTOM-COLOR: #d2d2d2; BORDER-TOP-COLOR: #d2d2d2; LINE-HEIGHT: 120%; FONT-FAMILY: "tahoma", "arial", "helvetica", "sans-serif", "宋体"; BACKGROUND-COLOR: #f9f9f9; BORDER-RIGHT-WIDTH: 1px; BORDER-RIGHT-COLOR: #d2d2d2
}
TEXTAREA {
BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 9pt; BORDER-LEFT-COLOR: #d2d2d2; BORDER-BOTTOM-WIDTH: 1px; BORDER-BOTTOM-COLOR: #d2d2d2; BORDER-TOP-COLOR: #d2d2d2; LINE-HEIGHT: 120%; FONT-FAMILY: "tahoma", "arial", "helvetica", "sans-serif", "宋体"; BACKGROUND-COLOR: #f9f9f9; BORDER-RIGHT-WIDTH: 1px; BORDER-RIGHT-COLOR: #d2d2d2
}
</style>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="Visual Basic .NET 7.1" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<table id="table1" borderColor="#66ccff" width="50%" align="center" border="1">
<tr align="center">
<td align="center"><asp:datalist id="dlt1" Runat="server" Width="100%">
<ItemTemplate>
<tr align="left">
<td align="left" bgcolor="#66ccff">
<asp:Label ID="lblclassid" Runat="server" text='<%# container.dataitem("classid")%>'>
</asp:Label> <a href='index.aspx?classid=<%# container.dataitem("classid")%>'>
<%# container.dataitem("classname")%>
</a>
</td>
</tr>
<tr>
<td>
<asp:datalist ID="dlt2" Runat="server">
<ItemTemplate>
<tr>
<td align="left">
<a href='bankuai.aspx?classid=<%# container.dataitem("classid")%>&nclassid=<%# container.dataitem("nclassid")%>'>
<%# container.dataitem("nclassname")%>
</a>
</td>
</tr>
</ItemTemplate>
</asp:datalist></td>
</tr>
</ItemTemplate>
</asp:datalist></td>
</tr>
</table>
</form>
</body>
</HTML>
Top
3 楼hackate(兰花开香入梦境,独思佳人亦飘然!!)回复于 2005-04-03 19:26:24 得分 0
以下是.vb代码
Imports System
Imports WebApplication8.hackate_cls
Public Class index
Inherits System.Web.UI.Page
#Region " Web 窗体设计器生成的代码 "
'该调用是 Web 窗体设计器所必需的。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
Protected WithEvents dlt1 As System.Web.UI.WebControls.DataList
'注意: 以下占位符声明是 Web 窗体设计器所必需的。
'不要删除或移动它。
Private designerPlaceholderDeclaration As System.Object
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
'不要使用代码编辑器修改它。
InitializeComponent()
End Sub
#End Region
Dim conn As SqlClient.SqlConnection
Dim cmd As SqlClient.SqlCommand
Dim rs As SqlClient.SqlDataReader
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
If Not IsPostBack Then
'conn = New SqlClient.SqlConnection(ConfigurationSettings.AppSettings("shujuku"))
'cmd = New SqlClient.SqlCommand("select * from hkbbs_class", conn)
'conn.Open()
'rs = cmd.ExecuteReader
If Trim(Request.QueryString("classid")) = "" Then
dlt1.DataSource = sqldaselect.dacountbig("select * from hkbbs_class")
dlt1.DataBind()
Else
dlt1.DataSource = sqldaselect.daselect("select * from hkbbs_class where classid=" & Trim(Request.QueryString("classid")))
dlt1.DataBind()
End If
'rs.Close()
'cmd.Dispose()
'conn.Close()
End If
End Sub
Private Sub dlt1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles dlt1.ItemDataBound
'Dim tmpid As Label = CType(e.Item.FindControl("lblclassid").text, Label)
Dim tmpid As String = CType(e.Item.FindControl("lblclassid"), Label).Text
'Response.Write("<script>alert('" & tmpid & "');</script>")
'conn = New SqlClient.SqlConnection(ConfigurationSettings.AppSettings("shujuku"))
'cmd = New SqlClient.SqlCommand("select * from hkbbs_nclass where classid='" & tmpid & "'", conn)
'conn.Open()
'rs = cmd.ExecuteReader
Dim tmpdlt As DataList = CType(e.Item.FindControl("dlt2"), DataList)
tmpdlt.DataSource = sqldaselect.dacountsmail("select * from hkbbs_nclass where classid='" & tmpid & "'")
tmpdlt.DataBind()
'rs.Close()
'cmd.Dispose()
'conn.Close()
End Sub
Private Sub dlt1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dlt1.SelectedIndexChanged
End Sub
End Class
Top
4 楼neting(.net学习中)回复于 2005-04-04 00:01:54 得分 0
谢谢,我自己搞定了Top




