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是肯定没问题的,现在我想问下怎么转换,我直接强制转换不行。
展开
 我来答
缑桂le
2010-08-05
知道答主
回答量:9
采纳率:0%
帮助的人:0
展开全部
这是~``````````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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
路瓃pv
2010-08-05 · TA获得超过961个赞
知道小有建树答主
回答量:653
采纳率:0%
帮助的人:544万
展开全部
DataRowView rowv = (DataRowView)e.Item.DataItem;
这句换成

Maticsoft.Model.order_subject rowv = (Maticsoft.Model.order_subject)e.Item.DataItem;

下面调用的时候
原来:rowv["id"];改成rowv.id;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
leon382
2010-08-05 · TA获得超过1064个赞
知道小有建树答主
回答量:1744
采纳率:0%
帮助的人:980万
展开全部
比如 theModel 是你list<model>里的model 你这样操作就可以了
theModel outextend = e.Row.DataItem as theModel;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式