DataList里套DataGrid,DataBind
作者: 来源: 添加时间:2006-5-21 18:40:06{
if(e.Item.ItemIndex>-1)
{
string id = ((TextBox)e.Item.FindControl("TextBox1")).Text;
MyGrid tmpGrid = (MyGrid)e.Item.FindControl("MyGrid1");
tmpGrid.loaddata(id);
}
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
this.DataList1.ItemDataBound+=new DataListItemEventHandler(DataList1_ItemDataBound);
}
#endregion
}
}
这个是我自己搞的:
在aspx文件里,是这样子套的
<ItemTemplate>
<TABLE id="Table3" cellSpacing="1" cellPadding="1" width="250" align="center" border="0">
<TR>
<TD class="title_main">
<asp:Image id="Image1" ImageUrl="../images/dot.gif" Runat="server" ImageAlign="AbsMiddle"></asp:Image>
<asp:hyperlink id=Hyperlink1 runat="server" NavigateUrl='<%# "../main/newtitle.aspx?cid=" + DataBinder.Eval(Container.DataItem, "tid") %>'>
<%# DataBinder.Eval(Container.DataItem, "tna") %>
</asp:hyperlink>
</TD>
</TR>
<TR>
<TD class="border" vAlign="top" height="150">
<asp:DataGrid id="DataGrid1" runat="server" HorizontalAlign="Center" Width="240px" AutoGenerateColumns="False" Font-Names="宋体" Font-Size="12px" GridLines="None" ShowHeader="False">
<Columns>
<asp:HyperLinkColumn DataNavigateUrlField="cid" DataNavigateUrlFormatString="newcontent.aspx?cid={0}" DataTextField="title"></asp:HyperLinkColumn>
</Columns>
</asp:DataGrid>
</TD>
</TR>
</TABLE>
</ItemTemplate>
</asp:datalist>
在cs文件中有这两个方法的
{
// 在此处放置用户代码以初始化页面
if(!IsPostBack)
{
//打开数据库
SqlConnection MyConnection=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["sqlconnectionstring"]);
MyConnection.Open();
//打开表
string mysql;
mysql="select tid,tna from new_type where iscatalog=0";
SqlCommand MyCommand=new SqlCommand(mysql,MyConnection);
SqlDataReader dr=MyCommand.ExecuteReader();
//数据绑定
DataList1.DataSource=dr;
DataList1.DataBind();
dr.Close();
MyConnection.Close();
}
}
{
//取tid
string tid;
//tid=e.Item.DataItem.GetType().ToString();
tid=((DbDataRecord)e.Item.DataItem).GetValue(0).ToString();
//Label mylabel=(Label)e.Item.FindControl("Label1");
//mylabel.Text=tid;
//绑定数据
DataGrid mygrid=(DataGrid)e.Item.FindControl("DataGrid1");
SqlConnection MyConnection=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["sqlconnectionstring"]);
MyConnection.Open();
string mysql;
mysql="select top 10 cid,title from new_content where tid=" + tid;
SqlCommand MyCommand=new SqlCommand(mysql,MyConnection);
SqlDataReader dr=MyCommand.ExecuteReader();
mygrid.DataSource=dr;
mygrid.DataBind();
dr.Close();
MyConnection.Close();
}
补充一下下,要这个的:using System.Data.Common;
在这里我发现的是DataGrid1.Item.DataItem的类型是和一开始时绑定它的方法有关的,我用了SqlDataReader来绑定数据,DataGrid1.Item.DataItem的类型就是System.Data.Common.DbDataRecord。我换了用DataTable来绑定时,就和msdn里的一样了,DataGrid1.Item.DataItem的类型是DbDataRecord
DataGrid的数据绑定可以用好多方法啊,嘛干会这样子的呢?我想没透的就是嘛干会用没同的方法绑定数据,就会有没同的类型呢?
DataGrid的数据绑定可以用好多方法啊,为什么会这样呢?我想不通为什么用不同的方法绑定数据会有不同的类型呢?