2011-07-18 14 views
12

Otrzymuję ten dziwny błąd ... klucz podstawowy w mojej bazie danych to "Identyfikator dokumentu", więc wiem, że to nie problem. Próbuję pobrać zaznaczone, edytować przyciski widoku gridview do pracy, ale potrzebuję poprawnie ustawionych datakeynames, aby były dostępne do użycia. jakieś pomysły?DataBinding: "System.Data.DataRowView" nie zawiera właściwości o nazwie

<asp:GridView ID="GridView1" runat="server" DataSourceID="sdsDocuments" EnableModelValidation="True" 
     SelectedIndex="0" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" DataKeyNames="DocumentID, DocumentTitle, DocumentBody"> 
     <Columns> 
      <asp:BoundField DataField="DocumentID" HeaderText="DocumentID" ReadOnly="True" SortExpression="ID" /> 
      <asp:BoundField DataField="DocumentTitle" HeaderText="DocumentTitle" SortExpression="Title" /> 
      <asp:BoundField DataField="DocumentBody" HeaderText="DocumentBody" SortExpression="Body" /> 
      <asp:CommandField ShowSelectButton="True" ShowDeleteButton="True" /> 
     </Columns> 
    </asp:GridView> 
    <asp:SqlDataSource ID="sdsDocuments" runat="server" ConnectionString="<%$ ConnectionStrings:blcDocumentationConnectionString %>" 
     SelectCommand="SELECT [DocumentTitle], [DocumentBody] FROM [tblDocument]" /> 

Oto ślad stosu ...

[HttpException (0x80004005): DataBinding: 'System.Data.DataRowView' does not contain a     property with the name 'DocumentID'.] 
     System.Web.UI.DataBinder.GetPropertyValue(Object container, String propName) +8672869 
     System.Web.UI.WebControls.GridView.CreateChildControls(IEnumerable dataSource, Boolean dataBinding) +2178 
     System.Web.UI.WebControls.CompositeDataBoundControl.PerformDataBinding(IEnumerable data) +57 
     System.Web.UI.WebControls.GridView.PerformDataBinding(IEnumerable data) +14 
     System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback(IEnumerable data) +114 
     System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback) +31 
     System.Web.UI.WebControls.DataBoundControl.PerformSelect() +142 
     System.Web.UI.WebControls.BaseDataBoundControl.DataBind() +73 
     System.Web.UI.WebControls.GridView.DataBind() +4 
     System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound() +82 
     System.Web.UI.WebControls.CompositeDataBoundControl.CreateChildControls() +72 
     System.Web.UI.Control.EnsureChildControls() +87 
     System.Web.UI.Control.PreRenderRecursiveInternal() +44 
     System.Web.UI.Control.PreRenderRecursiveInternal() +171 
     System.Web.UI.Control.PreRenderRecursiveInternal() +171 

    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +842 

Odpowiedz

6

Cóż, nie wybrano kolumnę documentid a więc to nie jest obecny w jednej DataTable lub DataView które są wiążące do siatki lub odwołującego że kolumna poprzez datatable.

zmienić zapytanie do

SelectCommand="SELECT [DocumentID],[DocumentTitle], [DocumentBody] FROM [tblDocument]" /> 
0

Wydaje się, że SqlDataSource nie zwraca kolumnę DocumentId.

Może należy zmienić definicję źródła danych do tego:

<asp:SqlDataSource ID="sdsDocuments" runat="server" ConnectionString="<%$ ConnectionStrings:blcDocumentationConnectionString %>" 
    SelectCommand="SELECT [DocumentID], [DocumentTitle], [DocumentBody] FROM [tblDocument]" /> 
Powiązane problemy