DataGrid的模版列怎么用? 比如说我要在该列中加如一个ImageButton,怎么加入,又怎么帮定图片, 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 右击DATAGRIT选 属性生成器!加入一个模版列后.确定!还是右击DATAGRIT选编辑模版列!会用了吧! <asp:TemplateColumn HeaderText="删除"> <ItemTemplate><asp:Button id="Button1" runat="server" Text="删除" CommandName="dele" BorderWidth="1px" ForeColor="Red"></asp:Button></ItemTemplate></asp:TemplateColumn> 9494,用zyw2833() 的方法,直接加入想要的控件,很方便的。 比如说:页面上是一个DataList,从数据库中取出“影片类型”来显示,在每取出一个“影片类型”时,根据当前取出的“影片类型”取出“影片记录”“影片类型”在DataList2中显示,在它的模板中再套一个Repeater(或DataList也行),在这个Repeater的模板中再显示影片记录//这是DataList,用来显示所有的影片类型<asp:datalist id="DataList2" runat="server" RepeatColumns="2" DataKeyField="类型ID" BorderColor="Tan" ForeColor="Black" BackColor="LightGoldenrodYellow" CellPadding="2" GridLines="Both" BorderWidth="1px">//这是DataList的模板,这里套了一个表格和若干Web控件,其中一个Repeater<ItemTemplate> //这是一个表格,是事前设计好的 <TABLE width="300" border="0"> <TR> //在这里显示当前类型中最新添加的影片,如动作片中最新添加的XX电影 //在模板中显示影片类型名称的链接,按URL参数方式传送到下一页面 <TD colSpan="2"><B>最新添加:</B> <A href='Movie.aspx?MovieType=<%# DataBinder.Eval(Container, "DataItem.类型ID")%>'> <%# DataBinder.Eval(Container, "DataItem.类型名称")%> </A> </TD> </TR> <TR> <TD width="150"><A id="Link1" runat="server" Target="_blank"><IMG id="Img1" height="90" alt="" src="" width="120" border="1" runat="server"></A> <DIV align="center"> <asp:HyperLink id="LinkName" runat="server" Target="_blank"></asp:HyperLink></DIV> </TD> <TD vAlign="top" align="left"> //这是Repeater,用来显示当前类型中影片 <asp:Repeater id="Repeater1" runat="server"> //这是Repeater的模板 <ItemTemplate> <div align="left"> //在模板中显示影片名称的链接,按URL参数方式传送到下一页面 <a href='MovieShow.aspx?MovieID=<%# DataBinder.Eval(Container, "DataItem.影片ID")%>' target=_blank> <%# DataBinder.Eval(Container, "DataItem.影片名称")%> </a> </div> </ItemTemplate> //Repeater的模板结束 </asp:Repeater></TD> </TR> </TABLE></ItemTemplate>//DataList的模板结</asp:datalist>代码:private void Page_Load(object sender, System.EventArgs e){ if(!IsPostBack) { BindList();//绑定数据到DataList }}private void BindList(){ OleDbConnection conn=(OleDbConnection)Session["conn"]; try { conn.Open(); //取出影片的类型 string sSel = "SELECT 类型ID, 类型名称,类型图片 FROM 类型"; OleDbDataAdapter da = new OleDbDataAdapter(sSel,conn); DataSet ds = new DataSet(); da.Fill(ds); DataList2.DataSource=ds; DataList2.DataBind(); } finally { conn.Close(); }}//在影片类型绑定的同时,查询此类型的影片,并绑定到Repeater上private void DataList2_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e){ //以DataList的关键字做查询,前提是DataList的关键字设置为类型ID string sID = ((DataList)sender).DataKeys[(int)e.Item.ItemIndex].ToString(); OleDbConnection conn=(OleDbConnection)Session["conn"]; try { if (conn.State.ToString() !="Open") conn.Open(); //根据关键字(类型ID)查询此类型的影片 string sSel = "SELECT top 6 * FROM V_影片 Where 类型ID = " + sID +" Order by 更新时间 desc"; OleDbDataAdapter da = new OleDbDataAdapter(sSel,conn); DataSet ds = new DataSet(); da.Fill(ds); //因为Repeater在模板中,所以无法直接使用,只能通过查找控件的方式来使用 Repeater Repeater1 = (Repeater)e.Item.FindControl("Repeater1"); //将影片绑定到Repeater上显示 Repeater1.DataSource = ds; Repeater1.DataBind(); //这一段是显示最新一条影片记录信息 //因为DataList绑定的影片类型,所以无法通过数据绑定的方式直接显示 //只能在这里查询后再将值绑定到模板的控件上显示 if (ds.Tables[0].Rows.Count >0) { //超链接控件,网页表示为<a href=""></a>的类型 HtmlAnchor lnk = (HtmlAnchor)e.Item.FindControl("Link1"); lnk.HRef ="MovieShow.aspx?MovieID=" + ds.Tables[0].Rows[0]["影片ID"].ToString(); //图片控件,网页表示为<img> HtmlImage img = (HtmlImage)e.Item.FindControl("Img1"); img.Src= ds.Tables[0].Rows[0]["图片"].ToString(); //Web控件,ASP.net支持的类型 HyperLink linkName = (HyperLink)e.Item.FindControl("linkName"); linkName.NavigateUrl = "MovieShow.aspx?MovieID=" + ds.Tables[0].Rows[0]["影片ID"].ToString(); linkName.Text =ds.Tables[0].Rows[0]["影片名称"].ToString(); } } finally { conn.Close(); }} 这个结构有点像我们以前在Delphi中的主从表格一样,在主表格显示数据的同时,显示子表格的内容,明白了么? ASP问题 checkboxlist怎么追加选项呢 100分再求..文档... 如何生级我的D版 WINDDOS2003 关于datagrid数据导出的问题。请各位大侠帮帮忙!!!!! 框架问题? 如何判断整型变量是否为空? 惨,我的DATAGRID删除问题 人为什么要睡觉 求助:bootstrap-table 无法显示右下角分页栏 做了一个加密,但是不会解密,好心人帮帮在下 请教一个奇怪的问题!!
选 属性生成器!
加入一个模版列后.
确定!
还是右击DATAGRIT
选编辑模版列!
会用了吧!
<ItemTemplate><asp:Button id="Button1" runat="server" Text="删除" CommandName="dele" BorderWidth="1px" ForeColor="Red"></asp:Button></ItemTemplate></asp:TemplateColumn>
“影片类型”在DataList2中显示,在它的模板中再套一个Repeater(或DataList也行),在这个Repeater的模板中再显示影片记录//这是DataList,用来显示所有的影片类型
<asp:datalist id="DataList2" runat="server" RepeatColumns="2" DataKeyField="类型ID" BorderColor="Tan" ForeColor="Black" BackColor="LightGoldenrodYellow" CellPadding="2" GridLines="Both" BorderWidth="1px">
//这是DataList的模板,这里套了一个表格和若干Web控件,其中一个Repeater
<ItemTemplate>
//这是一个表格,是事前设计好的
<TABLE width="300" border="0">
<TR>
//在这里显示当前类型中最新添加的影片,如动作片中最新添加的XX电影
//在模板中显示影片类型名称的链接,按URL参数方式传送到下一页面
<TD colSpan="2"><B>最新添加:</B> <A href='Movie.aspx?MovieType=<%# DataBinder.Eval(Container, "DataItem.类型ID")%>'>
<%# DataBinder.Eval(Container, "DataItem.类型名称")%>
</A>
</TD>
</TR>
<TR>
<TD width="150"><A id="Link1" runat="server" Target="_blank"><IMG id="Img1" height="90" alt="" src="" width="120" border="1" runat="server"></A>
<DIV align="center">
<asp:HyperLink id="LinkName" runat="server" Target="_blank"></asp:HyperLink></DIV>
</TD>
<TD vAlign="top" align="left">
//这是Repeater,用来显示当前类型中影片
<asp:Repeater id="Repeater1" runat="server">
//这是Repeater的模板
<ItemTemplate>
<div align="left">
//在模板中显示影片名称的链接,按URL参数方式传送到下一页面
<a href='MovieShow.aspx?MovieID=<%# DataBinder.Eval(Container, "DataItem.影片ID")%>' target=_blank>
<%# DataBinder.Eval(Container, "DataItem.影片名称")%>
</a>
</div>
</ItemTemplate>
//Repeater的模板结束
</asp:Repeater></TD>
</TR>
</TABLE>
</ItemTemplate>
//DataList的模板结
</asp:datalist>
代码:
private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
{
BindList();//绑定数据到DataList
}
}private void BindList()
{
OleDbConnection conn=(OleDbConnection)Session["conn"];
try
{
conn.Open();
//取出影片的类型
string sSel = "SELECT 类型ID, 类型名称,类型图片 FROM 类型";
OleDbDataAdapter da = new OleDbDataAdapter(sSel,conn);
DataSet ds = new DataSet();
da.Fill(ds);
DataList2.DataSource=ds;
DataList2.DataBind();
}
finally
{
conn.Close();
}
}//在影片类型绑定的同时,查询此类型的影片,并绑定到Repeater上
private void DataList2_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
{
//以DataList的关键字做查询,前提是DataList的关键字设置为类型ID
string sID = ((DataList)sender).DataKeys[(int)e.Item.ItemIndex].ToString();
OleDbConnection conn=(OleDbConnection)Session["conn"];
try
{
if (conn.State.ToString() !="Open") conn.Open();
//根据关键字(类型ID)查询此类型的影片
string sSel = "SELECT top 6 * FROM V_影片 Where 类型ID = " + sID +" Order by 更新时间 desc";
OleDbDataAdapter da = new OleDbDataAdapter(sSel,conn);
DataSet ds = new DataSet();
da.Fill(ds);
//因为Repeater在模板中,所以无法直接使用,只能通过查找控件的方式来使用
Repeater Repeater1 = (Repeater)e.Item.FindControl("Repeater1");
//将影片绑定到Repeater上显示
Repeater1.DataSource = ds;
Repeater1.DataBind();
//这一段是显示最新一条影片记录信息
//因为DataList绑定的影片类型,所以无法通过数据绑定的方式直接显示
//只能在这里查询后再将值绑定到模板的控件上显示
if (ds.Tables[0].Rows.Count >0)
{
//超链接控件,网页表示为<a href=""></a>的类型
HtmlAnchor lnk = (HtmlAnchor)e.Item.FindControl("Link1");
lnk.HRef ="MovieShow.aspx?MovieID=" + ds.Tables[0].Rows[0]["影片ID"].ToString(); //图片控件,网页表示为<img>
HtmlImage img = (HtmlImage)e.Item.FindControl("Img1");
img.Src= ds.Tables[0].Rows[0]["图片"].ToString();
//Web控件,ASP.net支持的类型
HyperLink linkName = (HyperLink)e.Item.FindControl("linkName");
linkName.NavigateUrl = "MovieShow.aspx?MovieID=" + ds.Tables[0].Rows[0]["影片ID"].ToString();
linkName.Text =ds.Tables[0].Rows[0]["影片名称"].ToString();
}
}
finally
{
conn.Close();
}
}