有两个Repeater嵌套,第一个Repeater内有一个ImageButton,绑定到ImageButton的事件是在第一个的OnItemCreated事件中,本来的用意是点击第一个ImageButton时,只影响嵌套内的第一个Repeater,点击第二个ImageButton时,就影响嵌套内的第二个Repeater,但,实际上点击任一个ImageButton都会让嵌套内的Repeater显示数据,我的代码哪里有问题呢?1,前台代码:<asp:Repeater runat="server" ID="rp01" DataSourceID="sds01" OnItemCreated="rp01_ItemCreated">
<itemtemplate>
<tr>
<td bgcolor="#FFFFFF"><%#DataBinder.Eval(Container.DataItem,"C100_00")%></td>
<td bgcolor="#FFFFFF"><asp:Label runat="server" ID="lbApplyID" Text='<%#DataBinder.Eval(Container.DataItem,"C100_01")%>'/></td>
<td bgcolor="#FFFFFF" align="center">
<asp:ImageButton ID="imgBtn1" runat="server" ImageUrl="../../images/expand_blue.jpg" CommandArgument='<%#DataBinder.Eval(Container.DataItem,"C100_01")%>' AlternateText="(Show Details...)"/>
</td>
<td bgcolor="#FFFFFF"><%#DataBinder.Eval(Container.DataItem,"C100_02")%></td>
<td bgcolor="#FFFFFF"><%#DataBinder.Eval(Container.DataItem,"C100_03")%></td>
<td bgcolor="#FFFFFF"><%#DataBinder.Eval(Container.DataItem,"C100_04")%></td>
<td bgcolor="#FFFFFF"><%#DataBinder.Eval(Container.DataItem,"C100_05")%></td>
<td bgcolor="#FFFFFF"><%#DataBinder.Eval(Container.DataItem,"C100_06")%></td>
<td bgcolor="#FFFFFF"><%#DataBinder.Eval(Container.DataItem,"C100_25")%></td>
<td bgcolor="#FFFFFF"><%#DataBinder.Eval(Container.DataItem,"C100_26")%></td>
<td bgcolor="#FFFFFF"><%#DataBinder.Eval(Container.DataItem,"C100_27")%></td>
<td bgcolor="#FFFFFF"><%#DataBinder.Eval(Container.DataItem,"C100_28","{0:D}")%></td>
<td bgcolor="#FFFFFF"><%#DataBinder.Eval(Container.DataItem,"C100_29")%></td>
</tr>
<tr>
<td colspan="13" bgcolor="#EFF5DC">
<asp:Panel runat="server" ID="pn1" Height="100" CssClass="collapsePanel" BackColor="#BEA61B">
签核明细:<br />
<table cellpadding="0" cellspacing="0" border="1">
<tr bgcolor="#D9C7A4">
<td>環節</td>
<td>建議</td>
<td>處理者</td>
<td>處理時間</td>
</tr>
<asp:Repeater runat="server" id="rp02" DataSourceID="sds02">
<itemtemplate>2,后台代码:
//imgBtn1_Click
private void imgBtn1_Click(object sender,CommandEventArgs e)
{
string applyid="";
applyid=e.CommandArgument.ToString();
ViewHandleDetailData(applyid);
}
//imgBtn1_Click
//ViewHandleDetailData
private void ViewHandleDetailData(string applyid)
{
string sqlstr="";
sqlstr+="select AR101_01,AR101_02,AR101_03,dbo.GetUserName(AR101_04) AR101_04,AR101_05 from pub_SignRecord where AR101_01='"+applyid+"'";
sds02.ConnectionString=connstr;
sds02.SelectCommand=sqlstr;
}
//ViewHandleDetailData
//rp01_ItemCreated
public void rp01_ItemCreated(object Sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
ImageButton imgBtn=(ImageButton)e.Item.FindControl("imgBtn1");
imgBtn.Command+=imgBtn1_Click;
}
}
//rp01_ItemCreated
<itemtemplate>
<tr>
<td bgcolor="#FFFFFF"><%#DataBinder.Eval(Container.DataItem,"C100_00")%></td>
<td bgcolor="#FFFFFF"><asp:Label runat="server" ID="lbApplyID" Text='<%#DataBinder.Eval(Container.DataItem,"C100_01")%>'/></td>
<td bgcolor="#FFFFFF" align="center">
<asp:ImageButton ID="imgBtn1" runat="server" ImageUrl="../../images/expand_blue.jpg" CommandArgument='<%#DataBinder.Eval(Container.DataItem,"C100_01")%>' AlternateText="(Show Details...)"/>
</td>
<td bgcolor="#FFFFFF"><%#DataBinder.Eval(Container.DataItem,"C100_02")%></td>
<td bgcolor="#FFFFFF"><%#DataBinder.Eval(Container.DataItem,"C100_03")%></td>
<td bgcolor="#FFFFFF"><%#DataBinder.Eval(Container.DataItem,"C100_04")%></td>
<td bgcolor="#FFFFFF"><%#DataBinder.Eval(Container.DataItem,"C100_05")%></td>
<td bgcolor="#FFFFFF"><%#DataBinder.Eval(Container.DataItem,"C100_06")%></td>
<td bgcolor="#FFFFFF"><%#DataBinder.Eval(Container.DataItem,"C100_25")%></td>
<td bgcolor="#FFFFFF"><%#DataBinder.Eval(Container.DataItem,"C100_26")%></td>
<td bgcolor="#FFFFFF"><%#DataBinder.Eval(Container.DataItem,"C100_27")%></td>
<td bgcolor="#FFFFFF"><%#DataBinder.Eval(Container.DataItem,"C100_28","{0:D}")%></td>
<td bgcolor="#FFFFFF"><%#DataBinder.Eval(Container.DataItem,"C100_29")%></td>
</tr>
<tr>
<td colspan="13" bgcolor="#EFF5DC">
<asp:Panel runat="server" ID="pn1" Height="100" CssClass="collapsePanel" BackColor="#BEA61B">
签核明细:<br />
<table cellpadding="0" cellspacing="0" border="1">
<tr bgcolor="#D9C7A4">
<td>環節</td>
<td>建議</td>
<td>處理者</td>
<td>處理時間</td>
</tr>
<asp:Repeater runat="server" id="rp02" DataSourceID="sds02">
<itemtemplate>2,后台代码:
//imgBtn1_Click
private void imgBtn1_Click(object sender,CommandEventArgs e)
{
string applyid="";
applyid=e.CommandArgument.ToString();
ViewHandleDetailData(applyid);
}
//imgBtn1_Click
//ViewHandleDetailData
private void ViewHandleDetailData(string applyid)
{
string sqlstr="";
sqlstr+="select AR101_01,AR101_02,AR101_03,dbo.GetUserName(AR101_04) AR101_04,AR101_05 from pub_SignRecord where AR101_01='"+applyid+"'";
sds02.ConnectionString=connstr;
sds02.SelectCommand=sqlstr;
}
//ViewHandleDetailData
//rp01_ItemCreated
public void rp01_ItemCreated(object Sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
ImageButton imgBtn=(ImageButton)e.Item.FindControl("imgBtn1");
imgBtn.Command+=imgBtn1_Click;
}
}
//rp01_ItemCreated
解决方案 »
- .net中 DropDownList 取值问题
- 急急急急—VisualSourceSafe 设置问题
- asp.net乱码
- 求asp.net(C#)方面的好书
- 为什么我装了Oracle后就不能运行.net了?
- 急呀!如何在asp.net中操作excel,把datatable数据导成excel。小弟现在急需,最好是代码。谢谢!
- 初级问题:ACCESS中有没有键约束
- 各位大侠请教一下 谁用过 OutputCache 用了更新不了cookie
- 使用HttpResponse做Execl导出后,Response.Write中写alert不好用了
- asp高手请进!
- 如何获取datalist中asp:label的text
- 大家说说,在callback里面你们是怎么实现网页跳转,重定向的
未点击ImageButton时的图
点击2处的ImageButton时的图:应该是点击2处的ImageButton时,只有B的Repeater才会绑定数据而已,A、C应该不能执行才对。
但现在,点击1、2、3时,都会让嵌套内的3个Repeater都有数据。
那你看你的rp2的datasource的ID不都固定的么?那么每条记录的datasource都是一样的咯,如此,你显示任何一条记录的明细资料的时候,其他的也一起显示了呗,而且信息还是一样的。
你说的很对,我试着想将每一行的imgBtn1_Click事件对应它的repeater,但还想不到怎样去做。
您有做过吗?谢谢
public void rp01_ItemCommand(Object Sender, RepeaterCommandEventArgs e)
{
Control ctl1=e.Item.FindControl("rp02");
string applyid="";
applyid=e.CommandArgument.ToString();
ViewHandleDetailData(applyid,sds02,((Repeater)ctl1));
}
//