repeater嵌套的问题
无法将类型为“Maticsoft.Model.order_subject”的对象强制转换为类型“System.Data.DataRowView”。if(e.Item.It...
无法将类型为“Maticsoft.Model.order_subject”的对象强制转换为类型“System.Data.DataRowView”。
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater rptdetal = (Repeater)e.Item.FindControl("Rpt_detal");
//找到科室Repeater关联的数据项
DataRowView rowv = (DataRowView)e.Item.DataItem;//这边出错了。错误如上。
说明:我的主repeater是用list<model>做数据源的,如果是ds是肯定没问题的,现在我想问下怎么转换,我直接强制转换不行。 展开
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater rptdetal = (Repeater)e.Item.FindControl("Rpt_detal");
//找到科室Repeater关联的数据项
DataRowView rowv = (DataRowView)e.Item.DataItem;//这边出错了。错误如上。
说明:我的主repeater是用list<model>做数据源的,如果是ds是肯定没问题的,现在我想问下怎么转换,我直接强制转换不行。 展开
3个回答
展开全部
这是~``````````Repeater嵌套的问题的详细页面,介绍了和asp.net,Repeater嵌套 问题 .NET技术 ASP.NET有关的知识,加入收藏请按键盘ctrl+D,谢谢大家的观看!要查看更多有关信息,请点击此处
有两个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
有两个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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
DataRowView rowv = (DataRowView)e.Item.DataItem;
这句换成
Maticsoft.Model.order_subject rowv = (Maticsoft.Model.order_subject)e.Item.DataItem;
下面调用的时候
原来:rowv["id"];改成rowv.id;
这句换成
Maticsoft.Model.order_subject rowv = (Maticsoft.Model.order_subject)e.Item.DataItem;
下面调用的时候
原来:rowv["id"];改成rowv.id;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
比如 theModel 是你list<model>里的model 你这样操作就可以了
theModel outextend = e.Row.DataItem as theModel;
theModel outextend = e.Row.DataItem as theModel;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询