当前位置:编程学习 > C#/ASP.NET >>

DataRowView rowv = (DataRowView)e.Item.DataItem; 强转有点问题!

不知道怎么样解决我贴下代码

    <form id="form1" runat="server">
    <div>
       开始时间:<asp:TextBox 
                  ID="starttime" runat="server" Width="221px" 
             onclick="WdatePicker({startDate:'%y-%M-01 00:00:00',dateFmt:'yyyy-MM-dd HH:mm:ss',alwaysUseStartDate:true})"></asp:TextBox> 
                         结束时间:<asp:TextBox ID="endtime" runat="server" Width="221px" 
       onclick="WdatePicker({startDate:'%y-%M-01 00:00:00',dateFmt:'yyyy-MM-dd HH:mm:ss',alwaysUseStartDate:true})"></asp:TextBox>

    <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="查询" />
        <br />
        <br />
        <br />

   <asp:Repeater id="repLM" runat="server" onitemdatabound="repLM_ItemDataBound">
    <ItemTemplate>
        <table >
            <tr>
                <td colspan="2">
                    <div align="left">
                        <table>
                            <tr>
                                <td >  
                      <%# DataBinder.Eval(Container.DataItem, "zhihangmingcheng")%>  </td>        
                                
                                           <td >  
                      <%# DataBinder.Eval(Container.DataItem, "平均")%>  </td>    
                                  <td >  
                      <%# DataBinder.Eval(Container.DataItem, "wangdianid")%>  </td>    
                                  <td >  
                      <%# DataBinder.Eval(Container.DataItem, "ATM数量")%>  </td>    
                          
                            </tr>
                            <tr>
                                <td>
                                    <table border="0" style="border-collapse: collapse" width="100%" id="table10">
                                        <asp:Repeater id="repWZ" runat="server">
                                            <ItemTemplate>
                                                <tr>
                                                   
                                                      <td >  
                      <%# DataBinder.Eval(Container.DataItem, "atmbianhao")%>  </td>    
                                  <td >  
                      <%# DataBinder.Eval(Container.DataItem, "jinger")%>  </td>    
                                                </tr>
                                            </ItemTemplate>
                                        </asp:Repeater>
                                    </table>
                                </td>
                            </tr>
                        </table>
                    </div>
                </td>
            </tr>
            <tr>
                <td width="87%">
                </td>
                <td width="12%" class="more"><span lang="zh-cn">更多</span></td>
            </tr>
        </table>
    </ItemTemplate>
</asp:Repeater>
    
    </div>
    </form>
</body>
</html>


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Text;
using System.Data.SqlClient;

namespace Maticsoft.Web.Admin
{
    public partial class AtmJianKongbyWandian : System.Web.UI.Page
    {
        Maticsoft.BLL.atmJiankong bll = new Maticsoft.BLL.atmJiankong();
        protected void Page_Load(object sender, EventArgs e)
        {

            if (!Page.IsPostBack)
            {
                if (Session["Admin_User"] == null)
                {
                    Response.Redirect("login.aspx");
                    Response.End();
                }
                else
                {





                }



            }

        }









        protected void repLM_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
          //判断里层repeater处于外层repeater的哪个位置( AlternatingItemTemplate,FooterTemplate,

//HeaderTemplate,,ItemTemplate,SeparatorTemplate)
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                Repeater rep = e.Item.FindControl("repWZ") as Repeater;//找到里层的repeater对象
                DataRowView rowv = (DataRowView)e.Item.DataItem;//找到分类Repeater关联的数据项


就是这里会报错。哎。求指教啊,谢谢 
                int typeid = Convert.ToInt32(rowv["wangdianid"]); //获取填充子类的id 


            
          
                StringBuilder strtime = new StringBuilder();


                if (starttime.Text.Trim() != "" && endtime.Text.Trim() != "")
                {
                    strtime.Append("  charushijian >='" + starttime.Text.ToString() + "' and charushijian<='" + endtime.Text.ToString() + "'");


                }



                string sqlconn = @"Data Source=127.0.0.1;Initial Catalog=atm;User ID=sa;Password=110110110";


                using (SqlConnection cn = new SqlConnection(sqlconn))
                {
                    cn.Open();
                    StringBuilder strSql = new StringBuilder();





                    strSql.Append("select ta.id,ta.atmbianhao,ta.jinger,flag,tb.zhihangmingcheng,tb.wangdianid,tb.adminname from ( ");
                    strSql.Append("select id,atmbianhao,jinger, ");
                    strSql.Append(" CASE jinger WHEN '0'     THEN '有故障' ");
                    strSql.Append("        ELSE '无故障' END as flag from atmjiankong t1 where  ");

                    strSql.Append("" + strtime + " and  ");
                    strSql.Append("t1.atmbianhao not in ( ");
                    strSql.Append(" select distinct tt1.atmbianhao  from atmguzhangjiankong tt1 ");
                    strSql.Append("where  ");

                    strSql.Append("" + strtime + "  ");
                    strSql.Append(") ");
                    strSql.Append("union ");
                    strSql.Append("select id,atmbianhao,0 jinger,'有故障' as flag from atmjiankong t1 where  ");

                    strSql.Append("" + strtime + "  and  ");
                    strSql.Append("t1.atmbianhao in ( ");
                    strSql.Append(" select distinct tt1.atmbianhao  from atmguzhangjiankong tt1 ");
                    strSql.Append("where  ");

                    strSql.Append("" + strtime + "    ");
                    strSql.Append(")) ta,(select tv3.id,tv1.zhihangmingcheng,tv2.adminname,tv1.id as wangdianid from wangdiandetail tv1,atminfo tv2,atmjiankong tv3 where tv1.id=tv2.zhihangmingchengid ");
                    strSql.Append("and tv2.atmbianhao=tv3.atmbianhao) tb where ta.id=tb.id ");
                    strSql.Append("and wangdianid=" + typeid + " ");



                    SqlCommand cmd = new SqlCommand(strSql.ToString(), cn);

                    SqlDataReader dr = cmd.ExecuteReader();
                    rep.DataSource = dr;

                    rep.DataBind();

                }
            }
        }



        protected void Button1_Click(object sender, EventArgs e)
        {
            BindData();
        }
        public void BindData()
        {




            StringBuilder strtime = new StringBuilder();


            if (starttime.Text.Trim() != "" && endtime.Text.Trim() != "")
            {
                strtime.Append("  charushijian >='" + starttime.Text.ToString() + "' and charushijian<='" + endtime.Text.ToString() + "'");


            }



            string sqlconn = @"Data Source=127.0.0.1;Initial Catalog=atm;User ID=sa;Password=110110110";


            using (SqlConnection cn = new SqlConnection(sqlconn))
            {
                cn.Open();
                StringBuilder strSql = new StringBuilder();




                strSql.Append("select sum(ttt.jinger)/count(ttt.atmbianhao) '平均',count(ttt.atmbianhao) 'ATM数量',ttt.zhihangmingcheng,ttt.wangdianid from  ");
                strSql.Append("( ");
                strSql.Append("select ta.id,ta.atmbianhao,ta.jinger,flag,tb.zhihangmingcheng,tb.wangdianid,tb.adminname from ( ");
                strSql.Append("select id,atmbianhao,jinger, ");
                strSql.Append(" CASE jinger WHEN '0'     THEN '有故障' ");
                strSql.Append("        ELSE '无故障' END as flag from atmjiankong t1 where  ");
                strSql.Append(" " + strtime + "  ");
                strSql.Append("  and  ");
                strSql.Append("t1.atmbianhao not in ( ");
                strSql.Append(" select distinct tt1.atmbianhao  from atmguzhangjiankong tt1 ");
                strSql.Append("where  ");
                strSql.Append("" + strtime + "     ");
                strSql.Append(") ");
                strSql.Append("union ");
                strSql.Append("select id,atmbianhao,0 jinger,'有故障' as flag from atmjiankong t1 where  ");
                strSql.Append(" " + strtime + "   and  ");
                strSql.Append("t1.atmbianhao in ( ");
                strSql.Append(" select distinct tt1.atmbianhao  from atmguzhangjiankong tt1 ");
                strSql.Append("where  ");
                strSql.Append(" " + strtime + "    ");
                strSql.Append(")) ta,(select tv3.id,tv1.zhihangmingcheng,tv2.adminname,tv1.id as wangdianid from wangdiandetail tv1,atminfo tv2,atmjiankong tv3 where tv1.id=tv2.zhihangmingchengid ");
                strSql.Append("and tv2.atmbianhao=tv3.atmbianhao) tb where ta.id=tb.id ");
                strSql.Append(") ttt group by ttt.zhihangmingcheng,wangdianid ");



                SqlCommand cmd = new SqlCommand(strSql.ToString(), cn);

                SqlDataReader dr = cmd.ExecuteReader();
                repLM.DataSource = dr;

                repLM.DataBind();

            }
        }

    }
}


    


--------------------编程问答-------------------- refer:http://www.eifr.com/article.php?id=182 --------------------编程问答-------------------- 谢谢我等会试试,看能不能解决。 --------------------编程问答-------------------- 看你的父repeater绑定的数据源是什么,并不是所有的都能转换为datarowview.
参考:

    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
        {
            string wangdianid = DataBinder.Eval(e.Item.DataItem, "wangdianid").ToString();
        }
    }
--------------------编程问答-------------------- 跟踪看看这个是什么类型,可能是无法强转为datarowview吧 --------------------编程问答-------------------- 你使用using,并且你使用了SqlDataReader来为repLM绑定数据

使用DataSet来作为repLM的数据源,应该就可以了 --------------------编程问答-------------------- SqlCommand cmd = new SqlCommand(strSql.ToString(), cn);

SqlDataReader dr = cmd.ExecuteReader();
rep.DataSource = dr;
rep.DataBind();

================》将你绑定的代码中统统修改成

SqlDataAdapter adapter = new SqlDataAdapter(strSql.ToString(), cn);
DataSet ds = new DataSet();
adapter.Fill(ds);
rep.DataSource = ds;
rep.DataBind();

--------------------编程问答-------------------- 谢谢各位,已经解决
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,