2013-02-18 97 views
0
protected void passSubContractorInfoToNewPage(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      Sub_Contractor subC = (Sub_Contractor)e.Row.DataItem; 
      HyperLink LoadSubContractorDetails = (HyperLink)e.Row.FindControl("LoadSubContractorDetails"); 
      LoadSubContractorDetails.NavigateUrl = ResolveUrl(@"~/SubContractDetails.aspx?id=" + subC.id.ToString()); 
     } 
} 
<asp:GridView ID="GridView2" OnRowDataBound="passSubContractorInfoToNewPage" runat="server" AllowPaging="True" AllowSorting="True" CssClass="gridview" AutoGenerateColumns="false" DataSourceID="GridDataSource1"> 
     <Columns> 
     <asp:BoundField DataField="id" HeaderText="id" ReadOnly="True" SortExpression="InvoiceInfoID" /> 
     <asp:BoundField DataField="Company Name" HeaderText="Company Name" SortExpression="Name" /> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:HyperLink ID="LoadSubContractorDetails" runat="server" Text="Show Details"/> 
      </ItemTemplate> 
     </asp:TemplateField> 



    </asp:GridView> 
    <asp:SqlDataSource ID="GridDataSource1" runat="server" 
      ConnectionString="<%$ConnectionStrings:ClarkesTest4FromMaster1ConnectionString %>" 
     SelectCommand="SELECT id, [Company Name] FROM [Sub Contractor] ORDER BY [Company Name]" > 
    </asp:SqlDataSource> 

这将返回与分包商为NULL 错误,错误为:e.row.rowType值返回NULL

Unable to cast object of type 'System.Data.DataRowView' to type 'Sub_Contractor'. 

也试过

if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      DataRowView view = (DataRowView)e.Row.DataItem; 

,但仍然没有喜悦... ..

为什么不收取子承包商有人可以告诉我吗?

由于

+1

所以_what_是'GridView'的数据源,调试器告诉你关于'e.Row.DataItem'的是什么?你没有向我们展示'GridDataSource1'。 – 2013-02-18 12:37:12

+0

请参阅我的编辑 – John 2013-02-18 13:38:03

回答

2

无法转换类型的对象 'System.Data.DataRowView' 到类型 'Sub_Contractor'。

这是不言自明的。因此,每个GridViewRow的基础数据源是DataRowView

但我不明白这一点:

也试过

if (e.Row.RowType == DataControlRowType.DataRow) 
{ 
    DataRowView view = (DataRowView)e.Row.DataItem; 

,但仍然没有喜悦.....

这应该不工作一个问题。所以我认为这会导致你还没有提到的另一个错误。